speed for loop in sum

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 个评论

Torsten
Torsten 2019-3-11
编辑:Torsten 2019-3-11
What's the problem with the solution I gave ?
I was not able to make it work.

请先登录,再进行评论。

 采纳的回答

Torsten
Torsten 2019-3-11

1 个投票

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 个评论

Thank you!
just as feedback the arrayfun is slower than the loop.
0.096s for the for loop
0.30s for the arrayfun

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by