获取3D矩阵的每个维度的索引

时间:2014-03-10 09:58:19

标签: matlab matrix

是否有更简洁的方法来获取3D矩阵的每个维度的索引?这是我的解决方案,但我不喜欢它重复并占用三行。

rows   = 1:size(vol,1);
cols   = 1:size(vol,2);
slices = 1:size(vol,3);

1 个答案:

答案 0 :(得分:4)

你有各种选择,但它并不比你拥有的更简单。

% 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) )

第一个返回三个单向量,后两个选项返回一个单元格数组,每个单元格中的每个维度都有一个向量。