在 matlab 中矢量化"triangular"循环



在Matlab中,我有以下循环:

for i=1:n
for j=i+1:n
P(i) = P(i) - Q(j);
end
end

我称之为"三角"循环,因为j依赖于i

是否可以将其矢量化为单行语句,该语句将比for循环运行得更快?

p和Q的类型是什么?它们是矢量吗?如果是的话:

P = P - [fliplr(cumsum(fliplr(Q(2:n)))) 0]

你甚至可以做一个反向累积和,这样fliplr就可以去:

P = P - [cumsum(Q(2:n),'reverse') 0] 

相关内容

  • 没有找到相关文章

最新更新