2

看起来这个问题应该很常见,但我还没有找到一个好的副本......

我正在实现一个具有可变大小的多维输出的 2 级 S 函数。状态必须在固定大小的 Dwork 向量中,因此我将输入矩阵零填充到输入允许的最大大小,然后将其重塑为向量。

当我将其重新整形为矩阵以进行输出时,我需要将其修剪回正确的大小。

该函数需要足够通用以支持任意数量的维度。输出的大小存储在大小数组中。

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

4

1 回答 1

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{:})
于 2015-03-05T16:38:48.683 回答