我想要一个代码,下面的代码在时间上更有效。最好没有循环。
参数:
t % time values vector
t_index = c % one of the possible indices ranging from 1:length(t).
A % a MXN array where M = length(t)
B % a 1XN array
代码:
m = 1;
for k = t_index:length(t)
A(k,1:(end-m+1)) = A(k,1:(end-m+1)) + B(m:end);
m = m + 1;
end
非常感谢。
答案 0 :(得分:2)
我从B构建了一个大小为NxM的矩阵(称之为B2),在正确的位置使用零,根据条件使用三角形,然后您需要做的就是A+B2
。
类似的东西:
N=size(A,2);
B2=zeros(size(A));
k=c:length(t);
B2(k(1):k(N),:)=hankel(B)
ans=A+B2;
请注意,它是“矢量化”这一事实并不意味着它现在更快。 Matlab的JIT使循环具有可比性,有时比内置的矢量化选项更快。