如何优化这些for循环?我通过使用矩阵而不是循环来学习优化,但在这种情况下,我不知道该怎么做。
for j = 2:n
for i = sum(R(1:j-1,1)) : sum(R(1:j,1))
F(1,i) = -s(j,1) * F_0;
end
end
答案 0 :(得分:0)
这是一个矢量化形式:
I = R(1,1):sum(R(:,1));
J = repelem(2:n,[R(2:end-1,1) ;R(end,1)+1]);
F(1,I) = -s(J,1) * F_0;
说明:
您可以使用示例数据运行循环,并查看i和j将如何更改
n = 7
R = randi([1 5],n,1)
for j = 2:n
for i = sum(R(1:j-1,1)) : sum(R(1:j,1))
disp([i j])
end
end
并基于此,您可以编写矢量化表格。