speed for loop in sum

1 vue (au cours des 30 derniers jours)
Ole
Ole le 11 Mar 2019
Commenté : Ole le 11 Mar 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 commentaires
Torsten
Torsten le 11 Mar 2019
Modifié(e) : Torsten le 11 Mar 2019
What's the problem with the solution I gave ?
Ole
Ole le 11 Mar 2019
I was not able to make it work.

Connectez-vous pour commenter.

Réponse acceptée

Torsten
Torsten le 11 Mar 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 commentaire
Ole
Ole le 11 Mar 2019
Thank you!
just as feedback the arrayfun is slower than the loop.
0.096s for the for loop
0.30s for the arrayfun

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by