优化(循环)

时间:2016-11-13 14:17:47

标签: matlab optimization

如何优化这些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

1 个答案:

答案 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

并基于此,您可以编写矢量化表格。