Matlab 沿着3D矩阵的每个维度获取索引
有没有一种更简洁的方法来获取3D矩阵中每个维度的索引?这是我的解决方案,但我不喜欢它重复并占用三行Matlab 沿着3D矩阵的每个维度获取索引,matlab,matrix,Matlab,Matrix,有没有一种更简洁的方法来获取3D矩阵中每个维度的索引?这是我的解决方案,但我不喜欢它重复并占用三行 rows = 1:size(vol,1); cols = 1:size(vol,2); slices = 1:size(vol,3); 你有各种各样的选择,但并不比你所拥有的更简单 % example volumen vol = flow(10); % Option 1 [rows cols slices] = deal( 1:size(vol,1), 1:size(vol,2), 1
rows = 1:size(vol,1);
cols = 1:size(vol,2);
slices = 1:size(vol,3);
你有各种各样的选择,但并不比你所拥有的更简单
% example volumen
vol = flow(10);
% Option 1
[rows cols slices] = deal( 1:size(vol,1), 1:size(vol,2), 1:size(vol,2) )
% Option 2
indexvectors = cellfun( @(x) 1:size(vol,x), num2cell(1:3), 'uni',0 )
% Option 3
indexvectors = arrayfun( @(x) {1:size(vol,x)}, 1:3)
indexvectors = arrayfun( @(x) {1:x}, size(vol) )
第一个选项返回三个单个向量,后两个选项返回一个单元格数组,每个单元格中的每个维度都有一个向量。您有各种选项,但并不比您所拥有的简单
% example volumen
vol = flow(10);
% Option 1
[rows cols slices] = deal( 1:size(vol,1), 1:size(vol,2), 1:size(vol,2) )
% Option 2
indexvectors = cellfun( @(x) 1:size(vol,x), num2cell(1:3), 'uni',0 )
% Option 3
indexvectors = arrayfun( @(x) {1:size(vol,x)}, 1:3)
indexvectors = arrayfun( @(x) {1:x}, size(vol) )
第一个选项返回三个单个向量,后两个选项返回一个单元格数组,每个单元格中的每个维度都有一个向量。[rows cols slices]=size(vol);?我想要索引向量。它是
1:size(vol,1)
,而不仅仅是size(vol,1)
。但我希望有一个解决方案看起来有点像你发布的;?我想要索引向量。它是1:size(vol,1)
,而不仅仅是size(vol,1)
。但我希望有一个解决方案,看起来有点像你发布的。太好了,我一直在寻找像deal
这样的函数很久了!谢谢考虑到矩阵是3D的,选项3可能更简单:arrayfun(@(x){1:x},size(vol))
Neat,我一直在寻找类似deal
的函数!谢谢考虑到矩阵是3D的,选项3可能更简单:arrayfun(@(x){1:x},size(vol))