我在重复多次的代码中嵌入了两个 for 循环。我想加快速度:
for i = 1:10
for j = 1:10
A(i,j) = B(i,j,D(i,j))*C(i,j);
end
end
这里 D 由整数组成,这些整数是 B 的索引。不依赖于 D 的 for 循环可以由元素矩阵乘法代替。问题是如何以优雅的方式评估 B。我搜索了 SO 和 mathworks-pages 并尝试了线性索引,但这会产生错误:
d = reshape(D, 100, []);
b = reshape(B, 100, []);
arrayfun(@(x) b(x,d(x)), 1:100);
我究竟做错了什么?有没有办法替换两个for循环?