我想繪製一個包含定積分的函數。我的代碼使用所有匿名函數。當我運行該文件時,它給了我一個錯誤。我的代碼如下:在matlab中繪製一個涉及積分的函數
%%% List of Parameters %%%
gamma_sp = 1;
cap_gamma = 15;
gamma_ph = 0;
omega_0 = -750;
d_omega_0 = 400;
omega_inh = 100;
d_omega_inh = 1000;
%%% Formulae %%%
gamma_t = gamma_sp/2 + cap_gamma/2 + gamma_ph;
G = @(x) exp(-(x-omega_inh).^2./(2*d_omega_inh.^2))./(sqrt(2*pi)*d_omega_inh);
F = @(x) exp(-(x-omega_0).^2./(2*d_omega_0.^2))./(sqrt(2*pi)*d_omega_0);
A_integral = @(x,y) G(x)./(y - x + 1i*gamma_t);
Q_integral = @(x,y) F(x)./(y - x + 1i*gamma_t);
A = @(y) integral(@(x)A_integral(x,y),-1000,1000);
Q = @(y) integral(@(x)Q_integral(x,y),-3000,0);
P1 = @(y) -1./(1i.*(gamma_sp + cap_gamma)).*(1./(y + 2.*1i.*gamma_t)*(A(y)-conj(A(0)))-1./y.*(A(y)-A(0))+cap_gamma./gamma_sp.*Q(y).*(A(0)-conj(A(0))));
P2 = @(y) conj(P1(y));
P = @(y) P1(y) - P2(y);
sig = @(y) abs(P(y)).^2;
rng = -2000:0.05:1000;
plot(rng,sig(rng))
在我看來,該程序運行繪圖命令時,應該把RNG到SIG(Y)的每一個值,而該值將被用作A_integral y值和Q_積分。但是,當我嘗試運行該程序時,matlab會引發錯誤。
Error using -
Matrix dimensions must agree.
Error in @(x,y)G(x)./(y-x+1i*gamma_t)
Error in @(x)A_integral(x,y)
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 133)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 76)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 89)
Q = integralCalc(fun,a,b,opstruct);
Error in @(y)integral(@(x)A_integral(x,y),-1000,1000)
Error in
@(y)-1./(1i.*(gamma_sp+cap_gamma)).*(1./(y+2.*1i.*gamma_t)*(A(y)-conj(A(0)))-1. /y.*(A(y)-A(0))+cap_gamma./gamma_sp.*Q(y).*(A(0)-conj(A(0))))
Error in @(y)P1(y)-P2(y)
Error in @(y)abs(P(y)).^2
Error in fwm_spec_diff_paper_eqn (line 26)
plot(rng,sig(rng))
有關我在做什麼錯的任何想法?
此代碼具有相同的問題,但可能更易於閱讀。 'G = @(x)x。^ 2; A_int = @(x,y)G(x)。* y; A = @(y)積分(@(x)A_int(x,y),0,10); r = -10:0.1:20; (r,A(r))' – camronm21