MATLAB Answers

How to I convert a 3D array into 4-column table (x y z value)?

7 views (last 30 days)
Johnathan Zeng
Johnathan Zeng on 9 Jan 2020
Commented: Johnathan Zeng on 10 Jan 2020
For example, I have the following (reading slices of DICOM images):
for ii = 1:length(files)
% get fileName
fileName = strcat(myPath, files(ii).name);
metaData{ii} = dicominfo(fileName);
sliceNum = metaData{ii}.SOPInstanceUID(end-2:end);
imgData(:,:,ii) = dicomread(fileName);
writematrix(imgData(:,:,ii), strcat(myPath, exportName, '-', sliceNum, '.csv'))
end
The format is as follows: imgData(x,y,z) = value
Where imgData is a 3D array of values such that imgData(:,:,z) will give me a 512x512 array of values.
If imgData(1,2,3) = 4, I want a 2D array to have the following:
x y z value
1 2 3 4
What is the best way to convert the index of the data into a column?

  0 Comments

Sign in to comment.

Accepted Answer

Matt J
Matt J on 9 Jan 2020
Edited: Matt J on 9 Jan 2020
[m,n,p]=size(imgData);
[x,y,z]=ndgrid(1:m,1:n,1:p);
out=[x(:),y(:),z(:),imgData(:)];

  1 Comment

Sign in to comment.

More Answers (0)

Sign in to answer this question.


Translated by