MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

Ole
0

speed for loop in sum

Ole
さんによって質問されました 2019 年 3 月 11 日
最新アクティビティ 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
2019 年 3 月 11 日
What's the problem with the solution I gave ?
Ole
2019 年 3 月 11 日
I was not able to make it work.

サインイン to comment.

1 件の回答

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
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.



Translated by