|
|
[求助]
利用matlab画出级联OPO波长调谐曲线
求高手指点!如题,模拟PPLN晶体级联OPO+OPA温度调谐曲线,但是不知道该怎么模拟!要得到最后面的那个图。
下面是我的程序,希望哪位高人能帮忙调一下!十分感激!
clear
clc
n=1;
m=1;
a1=5.756;
a2=0.0983;
a3=0.2020;
a4=189.32;
a5=12.52;
a6=1.32e-2;
b1=2.860e-6;
b2=4.700e-8;
b3=6.113e-8;
b4=1.516e-4;
A=31.5;
lamdap=1.064;
T = [25:0.1:250];
lamdas = [1.065:0.01:3.2];
lamdass = [2.5:0.01:4.5];
for i_T = 1:length(T)
f=(T(i_T)-24.5)*(T(i_T)+570.82);
ni = zeros(size(lamdas));
np = ni;
ns = ni;
nss = ni;
nii = ni;
for i_lamdas = 1:length(lamdas)
lamdai(i_lamdas)=1./(1./lamdap-1./lamdas(i_lamdas));
ni(i_lamdas)=(a1+b1.*f+(a2+b2.*f)./(lamdai(i_lamdas).^2-(a3+b3.*f)^2)+(a4+b4.*f)./(lamdai(i_lamdas).^2-a5^2)-a6.*lamdai(i_lamdas).^2).^(1/2);
np(i_lamdas)=(a1+b1.*f+(a2+b2.*f)./(lamdap.^2-(a3+b3*f)^2)+(a4+b4.*f)./(lamdap.^2-a5^2)-a6.*lamdap.^2).^(1/2);
ns(i_lamdas)=(a1+b1.*f+(a2+b2.*f)./(lamdas(i_lamdas).^2-(a3+b3.*f)^2)+(a4+b4.*f)./(lamdas(i_lamdas).^2-a5^2)-a6.*lamdas(i_lamdas).^2).^(1/2);
end
for i_lamdass = 1:length(lamdass)
lamdaii(i_lamdass)=1/(1/lamdas-1/lamdass(i_lamdass));
nii(i_lamdass)=(a1+b1.*f+(a2+b2.*f)./(lamdai2(i_lamdass).^2-(a3+b3.*f)^2)+(a4+b4.*f)./(lamdai2(i_lamdass).^2-a5^2)-a6.*lamdai2(i_lamdass).^2).^(1/2);
ns(i_lamdass)=(a1+b1.*f+(a2+b2.*f)./(lamdas(i_lamdass).^2-(a3+b3.*f)^2)+(a4+b4.*f)./(lamdas(i_lamdass).^2-a5^2)-a6.*lamdas(i_lamdass).^2).^(1/2);
nss(i_lamdass)=(a1+b1.*f+(a2+b2.*f)./(lamdass(i_lamdass).^2-(a3+b3.*f)^2)+(a4+b4.*f)./(lamdass(i_lamdass).^2-a5^2)-a6.*lamdass(i_lamdass).^2).^(1/2);
end
temp1 = abs(np./lamdap-ns./lamdas-ni./lamdai-1/A);
[x1,i_x1] = min(temp1);
lamdai_opt(i_T) = lamdai(i_x1);
lamdas_opt(i_T) = lamdas(i_x1);
temp2 = abs(ns./lamdas-nss./lamdass-nii./lamdaii-1/A);
[x2,i_x2] = min(temp2);
lamdaii_opt(i_T) = lamdaii(i_x2);
lamdass_opt(i_T) = lamdass(i_x2);
end
plot(T,lamdai_opt,'b.')
hold on
plot(T,lamdas_opt,'b.')
hold on
plot(T,lamdaii_opt,'b.')
hold on
plot(T,lamdass_opt,'b.')
![]()
级联OPO+OPA温度调谐曲线.jpg |
|