在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]