次のforループ(matlab)をベクトル化する方法についてのアドバイスに感謝します。
summ=0;
for i=1:lasti
summ=summ+abs(newTS(m+i*k)-newTS(m+(i-1)*k));
end
ベクトル化とは、forループの代わりに行列演算を使用することを意味します。一般に、ベクトル化はループよりも効率的で高速であると聞いています。
編集:実際に私が本当にベクトル化したいものは以下のとおりです。勇敢な魂がそれに挑戦したい場合に備えて、私はそれを含めます...
for j=1:length(kvec)
k=kvec(j);
for m=1:k
lasti=floor((N-m)/k);
Nfact=(N-1)/(lasti*k);
summ=0;
for i=1:lasti
summ=summ+abs(newTS(m+i*k)-newTS(m+(i-1)*k));
end
L(m,j)=(summ*Nfact)/k;
%Avg over m
AvgL(j)=mean(L(:,j));
end
end