3D array permutation

7 views (last 30 days)
Stijn De Schepper
Stijn De Schepper on 30 May 2018
Edited: Anton Semechko on 30 May 2018
I have a 3D volume mask_GTV (256x256x137) and I want to plot 3 different slices: XY,YZ,XZ.
Currently I use permute [1 3 2] for the XZ plane for example.
G = permute(mask_GTV,[1 3 2));
contour(G(:,:,120),[.5 .5])
The dimensions in this plot are different from what I expect. I would expect this to be a 256x137 plot, but it is 137x256.
How can I plot the correct slice?

Answers (2)

James Tursa
James Tursa on 30 May 2018
Edited: James Tursa on 30 May 2018
According to the doc for contour(Z), "... The x values correspond to the column indices of Z and the y values correspond to the row indices of Z ..."
So if you want the other order, do a different permute to account for it. E.g.,
G = permute(mask_GTV,[3 1 2));

Anton Semechko
Anton Semechko on 30 May 2018
Edited: Anton Semechko on 30 May 2018
Suppose you have G, which is a Y-by-X-by-Z 3D array, then
i-th xy slice:
G_yx=G(:,:,i); % Y-by-X array
i-th xz slice:
G_xz=permute(G(i,:,:),[2 3 1]); % X-by-Z array
i-th yz slice:
G_yz=permute(G(:,i,:),[1 3 2]); % Y-by-Z array

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!