How to vectorize For loop and array with indexing

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

2 comentarios

What’s linecirc?
linecirc is a matlab function which to find intersections of circles and lines in Cartesian plane

Iniciar sesión para comentar.

Respuestas (1)

Matthew Eicholtz
Matthew Eicholtz el 8 de Mzo. de 2016

0 votos

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 comentarios

I ran this code in R2015a. I want to improve the speed of linecirc function with vectorization. Usually vectorization is much better than for loop, that's why i try to vectorize it.
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.
I managed to vectorize this code with arrayfun. but the time differen is not that much

Iniciar sesión para comentar.

Preguntada:

el 8 de Mzo. de 2016

Comentada:

el 11 de Mzo. de 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by