How to vectorize For loop and array with indexing
1 次查看(过去 30 天)
显示 更早的评论
Hello, i want to vectorize the linecirc function below:
xout = zeros(nAngles,2); %360x2 size
yout = zeros(nAngles,2); %360x2 size
for i = 1:nAngles
[xout(i,:),yout(i,:)] = linecirc(slope(i),intercept(i),xp,yp,rp); %slope=intercept=1x360 size
end
before this, i tried to use arrayfun. unfortunately arrayfun is not faster than for loop. maybe indexing can make it faster. Thanks
回答(1 个)
Matthew Eicholtz
2016-3-8
Disclaimer: I do not have R2016a, so I cannot test the linecirc function.
But, if you already tried arrayfun and it was slower, I think the for-loop is going to be your fastest bet. Is there a reason (other than speed) that you want to vectorize the code? Sometimes a for-loop is the way to go.
3 个评论
Matthew Eicholtz
2016-3-10
Ah, I thought linecirc was exclusive to R2016a, but I see now that it is in earlier versions. However, it requires the Mapping Toolbox, which I do not have, so I still cannot test it.
Vectorization is not always the best route if you do not need it. Hence my question about your motives.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!