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

6 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

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

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by