speed for loop in sum

2 visualizaciones (últimos 30 días)
Ole
Ole el 11 de Mzo. de 2019
Comentada: Ole el 11 de Mzo. de 2019
Can the for loop be removed ?
x=linspace(-2,2,100); %some vector
[X,XX]=meshgrid(x,x); %some matrix
a=1/2;%some constant
A0=zeros(size(X));%initialize the sum
A0k = @(k,X,a)(((-1)^k).*((X./a).^(2*k)).*besselj(2*k,X));%series
for l=0:20
A0 = A0+A0k(l,X,a); %sum of series
end
  2 comentarios
Torsten
Torsten el 11 de Mzo. de 2019
Editada: Torsten el 11 de Mzo. de 2019
What's the problem with the solution I gave ?
Ole
Ole el 11 de Mzo. de 2019
I was not able to make it work.

Iniciar sesión para comentar.

Respuesta aceptada

Torsten
Torsten el 11 de Mzo. de 2019
function main
x = linspace(-2,2,100); %some vector
[X,XX] = meshgrid(x,x); %some matrix
k = 0:20;
a = 0.5;
A0 = arrayfun(@(x)sum((-1).^k.*(x/a).^(2*k).*besselj(2*k,x)),X)
end
  1 comentario
Ole
Ole el 11 de Mzo. de 2019
Thank you!
just as feedback the arrayfun is slower than the loop.
0.096s for the for loop
0.30s for the arrayfun

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by