Extract 2d slice from a 3d matrix
44 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Zehra Ese
am 27 Apr. 2023
Kommentiert: Stephen23
am 27 Apr. 2023
I have a 3d-matrix A, x-y-z with a size of 260x260x258 containing dose values. I want to extract the values of a certain layer x-z (260x258) from this matrix, in order to plot it and see the dose distribution. Could u give me an advice how to do this? I need to extract several layers, but if I know how to do it for e specific layer I could expand it.
0 Kommentare
Akzeptierte Antwort
Benjamin Kraus
am 27 Apr. 2023
Bearbeitet: Benjamin Kraus
am 27 Apr. 2023
If you have a 3-D matrix, and you want just a single X-Z slice, you probably need a mix of indexing and either shiftdim or permute or squeeze to shift your data into the first two dimensions. For example:
d = rand(260,260,258);
s = d(:,10,:); % Grab the 10th slice
size(s) % This will be [260 x 1 x 258]
s1 = squeeze(s); % "squeeze" out the middle singleton dimension
size(s1)
figure
imagesc(s1)
% Alternatively
s2 = permute(s,[1 3 2]); % swap the second and third dimensions, so the singleton dimension is last
size(s2)
figure
imagesc(s2)
% Alternatively
s3 = shiftdim(s,2); % Shift the dimensions twice, so the singleton dimension ends up at the end.
size(s3)
s4 = s3'; % Transpose to swap the two remaining dimensions.
size(s4)
figure
imagesc(s3)
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical 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!