似乎这个问题应该是常见的,但我还没有找到一个好的复制品......
我实现了具有可变大小多维输出的2级S函数。状态必须是固定大小的Dwork向量,因此我将输入矩阵填充到输入允许的最大大小,然后将其重新整形为向量。
当我将其重新塑造成矩阵以进行输出时,我需要将其修剪回正确的尺寸。
该功能必须足够通用以支持任意数量的维度。输出的大小存储在一个大小数组中。
例如,我可能有500x500矩阵N,并且大小数组S = [40 25]。我需要一个能给我N(1:S(1),1:S(2))的MATLAB表达式,但它需要适用于任意数量的维度,所以我不能像那样对它进行硬编码。 / p>
答案 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{:})