我有一个很长的切片序列,我需要应用到很多MATLAB矩阵我该怎么做?
我能简化一下吗,

y(1:some_var*3,1:some_other_var*3,1:another_var*3) = x1(1:some_var*3,1:some_other_var*3,1:another_var*3) .* x2(1:some_var*3,1:some_other_var*3,1:another_var*3) ./ x3(1:some_var*3,1:some_other_var*3,1:another_var*3)

比如说,
inds = slice(1:some_var*3,1:some_other_var*3,1:another_var*3)
y(inds) = x1(inds) .* x2(inds) ./ x3(inds)

就像我在Python里一样?

最佳答案

一种选择是将每个索引向量存储在acell array的单元格中,然后将单元格数组内容提取为acomma-separated list类似这样:

inds = {1:some_var*3, 1:some_other_var*3, 1:another_var*3};
y(inds{:}) = x1(inds{:}) .* x2(inds{:}) ./ x3(inds{:});

如果矩阵较大,索引集相对较小/稀疏,则这可能比using a logical mask as Amro suggested更有效。

08-25 02:05