MATLAB Answers

speed for loop in sum

2 ビュー (過去 30 日間)
Ole
Ole 2019 年 3 月 11 日
Commented: Ole 2019 年 3 月 11 日
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 日
What's the problem with the solution I gave ?
Ole
Ole 2019 年 3 月 11 日
I was not able to make it work.

サインイン to comment.

採用された回答

Torsten
Torsten 2019 年 3 月 11 日
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 件のコメント

Ole
Ole 2019 年 3 月 11 日
Thank you!
just as feedback the arrayfun is slower than the loop.
0.096s for the for loop
0.30s for the arrayfun

サインイン to comment.

More Answers (0)

サインイン してこの質問に回答します。


Translated by