gpt4 book ai didi

matlab - 我如何矢量化这个for循环(matlab)

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:39 25 4
gpt4 key购买 nike

我很感激关于如何向量化以下 for 循环 (matlab) 的建议:

    summ=0;
for i=1:lasti
summ=summ+abs(newTS(m+i*k)-newTS(m+(i-1)*k));
end

我所说的矢量化是指使用矩阵运算而不是 for 循环。我听说矢量化通常比 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

最佳答案

基本上你想对 newTS(m+i*k)newTS(m+(i-1)*k) 之间的所有距离求和,所以你可以做这样的事情

summ = sum(abs(diff(newTS(m:k:m+lasti*k))))

我同意你的看法,根据我使用 Matlab 的经验,矩阵运算通常比 for 循环快得多。我尽量避免使用它们。

编辑:我认为替换内部 i 循环对你来说应该足够好了。也许您可以通过将 newTS reshape 为矩阵来替换 m 循环,但是由于每个 mlasti 都是不同的,在您的情况下可能会很棘手。

关于matlab - 我如何矢量化这个for循环(matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15217927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com