如何从n维矩阵中获得n-2维子矩阵?

时间:2014-05-09 12:42:24

标签: matlab matrix

我有一个n维矩阵,我想要n-2维子矩阵

例如:

如果我有一个6x5x4x3x2的矩阵A,我想得到例如矩阵

B = A(1,:,:,:,2);

如果尺寸的数量是固定的,这很容易,但是如何针对可变尺寸执行此操作而不必为每个尺寸的数量处理特定的情况?

Bad:
n = length(size(A));
if (n == 2)
  B = A(1,2)
else if (n == 3)
  B = A(1,:,2);
else if (n == 4)
  B = A(1,:,:,2);
else if (n == 5)
  B = A (1,:,:,:,2);

 ...

 Good:
 B=A(1,<some cool operator/expression>,2);

1 个答案:

答案 0 :(得分:-1)

感谢评论中提供的link,我能够像这样解决它:

n = ndim(A);
if (n <= 2)
   B = A(1,2);
else
   colons = repmat({':'},[1 n-2]);
   B = A(1,colons{:},2);