【问题标题】:Get the indices along each dimension of a 3D matrix获取沿 3D 矩阵的每个维度的索引
【发布时间】:2015-03-13 21:54:21
【问题描述】:

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

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

【问题讨论】:

  • [rows cols slices] = size(vol);?
  • 我想要索引向量。这是1:size(vol,1),而不仅仅是size(vol,1)。但我希望有一个看起来有点像你发布的解决方案。

标签: matlab matrix


【解决方案1】:

您有多种选择,但并不比您拥有的更简单。

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

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

【讨论】:

  • 不错,找deal这样的功能找了很久!谢谢!
  • 鉴于矩阵是 3D,选项 3 可能更简单:arrayfun(@(x){1:x}, size(vol))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2015-06-16
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
相关资源
最近更新 更多