speed for loop in sum

2 visualizzazioni (ultimi 30 giorni)
Ole
Ole il 11 Mar 2019
Commentato: Ole il 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 Commenti
Torsten
Torsten il 11 Mar 2019
Modificato: Torsten il 11 Mar 2019
What's the problem with the solution I gave ?
Ole
Ole il 11 Mar 2019
I was not able to make it work.

Accedi per commentare.

Risposta accettata

Torsten
Torsten il 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 Commento
Ole
Ole il 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by