我很欣賞我如何可能會向量化下面的for循環(MATLAB)建議:我怎樣才能向量化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
你應該指定變量''和'k'的大小以及'newTS()'是否也適用於向量。否則這個問題就不能很好地回答。 – 2013-03-05 07:20:17
還要指定'newTS'是一個函數還是僅僅是一個你正在提取元素的矩陣。如果'newTS'是一個函數,它必須在這個循環完全優化之前進行矢量化。 – user57368 2013-03-05 07:23:29
@ H.Muster我認爲m和k的大小在我剛剛編輯後應該清楚。 – ben 2013-03-05 07:39:04