speed for loop in sum

1 回表示 (過去 30 日間)
Ole
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
Torsten 2019 年 3 月 11 日
編集済み: 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.

サインインしてコメントする。

採用された回答

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by