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

1 vote

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 Centre d'aide et File Exchange

Produits

Question posée :

Ole
le 11 Mar 2019

Commenté :

Ole
le 11 Mar 2019

Community Treasure Hunt

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

Start Hunting!

Translated by