How can I avoid using for loop in this functions
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
This is the function whose speed I want to improve. I know I should use more matrix operation and use less for loop. But I have no idea how to use if-else in matrices.
function y=Besselj_approx(n,z)
y=zeros(1,length(n));
for i=n
if i>0
y(i)=1./gamma(i+1).*(z/2).^i;
elseif i<0
y(i)=(-1).^(-i)./gamma(-i+1).*(z/2).^(-i);
else
y(i)=-z.^2/4+1;
end
end
Any help is appreciated!
4 Commenti
Risposta accettata
KSSV
il 26 Mar 2023
function y=Besselj_approx(n,z)
i = n ;
y=zeros(1,length(n));
y(1:end)=-z.^2/4+1;
y(i>0) = 1./gamma(i(i>0)+1).*(z/2).^i(i>0);
y(i<0)=(-1).^(-i(i<0))./gamma(-i(i<0)+1).*(z/2).^(-i(i<0));
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!