warning in solving MeijerG function on Matlab?

2 vues (au cours des 30 derniers jours)
Deema42
Deema42 le 26 Jan 2017
Commenté : Deema42 le 26 Jan 2017
I'm trying to plot an equation contains meijerG function, i have an m.file for the meijerG function, when i run the code, i get a warning, it may be the reason why my plot has few errors, but i do not inderstand the warning, so anyone can just help me to know what is the warning wbout to fix it?
Here is the code:
a=0;
k_0=.1;
step = 0.1; range = 0:step:3;
variance1_0db = sqrt(1/(2.*(k_0+1)));
variance2_0db = sqrt(2/(2.*(k_0+1)));
mean1_0db=sqrt(k_0/(k_0+1)); % mean of underlying Gaussian random variables
mean2_0db=sqrt((2.*k_0)/(k_0+1));
parfor m=0:30
for n=0:30
c2=(1./(2.*variance1_0db.^2.*variance2_0db.^2)).*exp(-mean1_0db.^2/(2.*variance1_0db.^2)).*exp(-mean2_0db.^2./(2.*variance2_0db.^2)).*(1./((factorial(m).^2).*(factorial(n)).^2))* (((mean1_0db)./(2.*variance1_0db.^2)).^(2.*m)).*(((mean2_0db)./(2.*variance2_0db.^2)).^(2.*n))*((1./(2.*(variance2_0db.^2))).^(m-n));
f=(c2).*(range.^(2.*m+1)).*MeijerG({[1+m-n,1], []}, {[], []}, ((4.*variance1_0db.^2.*variance2_0db.^2)./(range.^2)));
a=a+f;
end
end
plot(range, a,'b');
and the m.file for the MeijerG is attached.
And here is the warning: > In MeijerG at 91 In parallel_function>make_general_channel/channel_general at 923 In remoteParallelFunction at 38

Réponse acceptée

Walter Roberson
Walter Roberson le 26 Jan 2017
Your range variable starts at 0. You have a division by range. That gets you infinity at that location. You then try to calculate MeijerG at infinity; that returns back a symbolic placeholder that cannot be evaluated to a numeric value, which leads to the warning.
Solution: do not use 0 in range.

Plus de réponses (0)

Catégories

En savoir plus sur Linear and Nonlinear Regression dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by