📄 gauss.m
字号:
N=1024;
T0=10;
t=linspace(-15,15,N);
C=0;
%u0=exp(-t.*t/2); %高斯脉冲
%u0=sech(t).*exp(-i*C*t.^2/2); %双曲正割脉冲
%u0=exp(-(1+i*C)/2*t.^2); %啁啾高斯脉冲
m=3; %超高斯脉冲
u0=exp(-(1+i*C)*t.^(2*m)/2);
% u0=tripuls(t);
u2=u0.*conj(u0); %强度?
ts=t(2)-t(1);
fs=1/ts;
f=fs*(-N/2:N/2-1)/N;
beta2=-20;
beta3=0;
if beta2==0
Ld=T0.^3/abs(beta3);
else
Ld=T0.^2/abs(beta2);
end
z=20;
h0=1/500;
u3=ones(N,z-1);
r=2;
P0=10e-2;
Lnl=1/(r*P0);
N2=Ld/Lnl;
for k=1:z
h=h0;
while h<=1, %若h过大,可能所得的波形会出现振荡,可以增加时间窗口
u0=u0.*exp(i*h0*N2*abs(u0).^2);
v0=fft(u0); %通常要求时间窗口尺寸是脉冲宽度的10-20倍
%v0=fftshift(v0);
d=i*sign(beta2)*(2*pi*f).^2/2;%只考虑二阶色散;
% d=i*beta2*(2*pi*f).^2/2+i*beta3*(2*pi*f).^3/6;%考虑2、3阶色散;
d=fftshift(d);
v1=exp(h0*d).*v0;
u1=ifft(v1);
% u1=ifftshift(u1);
h=h+h0;
u0=u1;
end
u3(:,k)=u0.*conj(u0);
end
u3=[u2' u3];
x=zeros(N,z);
y=zeros(N,z);
for k=1:z
x(:,k)=k-1;
y(:,k)=t';
end
z=[1:1:z];
plot3(x(:,z),y(:,z),u3(:,z));
%plot(t/T0,v0);
%xlable('T/T0');
%ylable('z/Ld');
%zlable('|U(z,T)|^2');
grid on;
%u3=u3';
%plot(t/T0,u3(1,:),'r',t/T0,u3(5,:),'o');
%hold on;
%[T,z]=meshgrid(t/T0,0:1:20);
%plot3(T,z,abs(u3).^2);
%plot(t/T0,abs(u2).^2,'m',t/T0,abs(u0).^2,'r');
%hold on
%高斯脉冲的理论解
%U=T0/sqrt((T0.^2-i*beta2*4*Ld))*exp(-t.^2/(2*(T0.^2-i*beta2*4*Ld)));
%plot(t/T0,abs(U).^2,'b');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -