子矩阵基于大小向量

时间:2015-03-05 16:33:22

标签: matlab submatrix

似乎这个问题应该是常见的,但我还没有找到一个好的复制品......

我实现了具有可变大小多维输出的2级S函数。状态必须是固定大小的Dwork向量,因此我将输入矩阵填充到输入允许的最大大小,然后将其重新整形为向量。

当我将其重新塑造成矩阵以进行输出时,我需要将其修剪回正确的尺寸。

该功能必须足够通用以支持任意数量的维度。输出的大小存储在一个大小数组中。

例如,我可能有500x500矩阵N,并且大小数组S = [40 25]。我需要一个能给我N(1:S(1),1:S(2))的MATLAB表达式,但它需要适用于任意数量的维度,所以我不能像那样对它进行硬编码。 / p>

1 个答案:

答案 0 :(得分:2)

以下是m代码的解决方案:

%your input
M=rand(10,10,10);
S=[2,3,4]
%generate indices:
Index=arrayfun(@(x)(1:x),S,'uni',0)
%use comma separated list to index:
smallM=M(Index{:})