Extract 2d slice from a 3d matrix
51 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Benjamin Kraus
2023-4-27
编辑:Benjamin Kraus
2023-4-27
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)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!