⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 j_f_peng.m

📁 孤子传输孤子传输孤子传输孤子传输孤子传输孤子传输
💻 M
字号:
clear
clc
% h 迭代时选择的步长
% dT 选择的时间步长
% T 时间坐标
% z 位置坐标
% n 将T分成N个区域dT=T/N,n=0,1,2,3,...,N-1
% w0 w0=2*pi/N
% w 文章中采用负频故w=-w0*n,n,w均是个向量
% gn 关于的函数
% A 单根光纤中模场的慢变振幅
% At1 双芯耦合器第一个纤芯中模场的归一化慢变振幅
% At2 双芯耦合器第二个纤芯中模场的归一化慢变振幅
% Ath1 三芯耦合器第一个纤芯中模场的归一化慢变振幅
% Ath2 三芯耦合器第二个纤芯中模场的归一化慢变振幅
% Ath3 三芯耦合器第三个纤芯中模场的归一化慢变振幅
h=0.0005;
dT=0.01;
T=-15:dT:15;                    
z=0:h:10;                        
n=0:1:(length(T)-2);                       
w0=2*pi/(length(T)-1);           
w=-w0*n;                         
gn=-i*w.^2/2;                    
A(1,:)=sech(T(1):dT:T(length(T)-1));        
At1(1,:)=sech(T(1):dT:T(length(T)-1));      
At2(1,:)=zeros(length(T)-1,1);           
Ath1(1,:)=sech(T(1):dT:T(length(T)-1));     
Ath2(1,:)=zeros(length(T)-1,1);          
Ath3(1,:)=zeros(length(T)-1,1);          
% 对称分步傅里叶变换法求解光脉冲在N芯耦合器中的耦合模方程组的数值解的迭代过程
% 由于这里只考虑二阶色散,故可以不考虑fft()和ifft()的交换问题
% 用fftshift(),ifftshift()将零频矢量移到频率中心
for k=1:1:length(z)-1
% 孤子(光脉冲)在单根光纤中的传输演化过程
    An=fftshift(fft(exp(gn*h/2).*fftshift(ifft(A(k,:)))));
    Ap=An.*exp(i*h*abs(A(k,:)).^2);
    A(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ap))));
    for l=1:2
        Ap=An.*exp(i*h/2*(abs(A(k,:)).^2+abs(A(k+1,:)).^2));
        A(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ap))));
    end
% 孤子(光脉冲)在双芯耦合器中的传输演化过程
    At1n=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At1(k,:))+i*h/2*ifft(At2(k,:)))));
    At1p=At1n.*exp(i*h*abs(At1(k,:)).^2);
    At2n=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At2(k,:))+i*h/2*ifft(At1(k,:)))));
    At2p=At2n.*exp(i*h*abs(At2(k,:)).^2);
    At1(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At1p)+i*h/2*ifft(At2p))));
    At2(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At2p)+i*h/2*ifft(At1p))));
    for l=1:2
        At1p=At1n.*exp(i*h/2*(abs(At1(k,:)).^2+abs(At1(k+1,:)).^2));
        At2p=At2n.*exp(i*h/2*(abs(At2(k,:)).^2+abs(At2(k+1,:)).^2));
        At1(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At1p)+i*h/2*ifft(At2p))));
        At2(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(At2p)+i*h/2*ifft(At1p))));
    end
% 孤子(光脉冲)在三芯耦合器中的传输演化过程
    Ath1n=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath1(k,:))+i*h/2*(ifft(Ath2(k,:))))));
    Ath1p=Ath1n.*exp(i*h*abs(Ath1(k,:)).^2);
    Ath2n=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath2(k,:))+i*h/2*(ifft(Ath1(k,:))+ifft(Ath3(k,:))))));
    Ath2p=Ath2n.*exp(i*h*abs(Ath2(k,:)).^2);  
    Ath3n=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath3(k,:))+i*h/2*(ifft(Ath2(k,:))))));
    Ath3p=Ath3n.*exp(i*h*abs(Ath3(k,:)).^2);    
    Ath1(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath1p)+i*h/2*ifft(Ath2p))));
    Ath2(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath2p)+i*h/2*(ifft(Ath1p)+ifft(Ath3p)))));
    Ath3(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath3p)+i*h/2*ifft(Ath2p)))); 
    for l=1:2
        Ath1p=Ath1n.*exp(i*h/2*(abs(Ath1(k,:)).^2+abs(Ath1(k+1,:)).^2));
        Ath2p=Ath2n.*exp(i*h/2*(abs(Ath2(k,:)).^2+abs(Ath2(k+1,:)).^2));
        Ath3p=Ath3n.*exp(i*h/2*(abs(Ath3(k,:)).^2+abs(Ath3(k+1,:)).^2));
        Ath1(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath1p)+i*h/2*ifft(Ath2p))));
        Ath2(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath2p)+i*h/2*(ifft(Ath1p)+ifft(Ath3p)))));
        Ath3(k+1,:)=fftshift(fft(exp(gn*h/2).*fftshift(ifft(Ath3p)+i*h/2*ifft(Ath2p)))); 
    end
end
plot(T(1:1:length(T)-1),A(1,:))
xlabel('t')
ylabel('A')
title('光脉冲A=sech(t)')
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(A(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(A(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('A')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('光脉冲在单根光纤中的传输')
view(129,44)
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(At1(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(At1(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('At1')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('双芯耦合器中光脉冲在第一根光纤中传输')
view(129,44)
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(At2(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(At2(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('At2')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('双芯耦合器中光脉冲在第二根光纤中传输')
view(129,44)
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(Ath1(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(Ath1(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('Ath1')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('三芯耦合器中光脉冲在第一根光纤中传输')
view(129,44)
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(Ath2(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(Ath2(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('Ath2')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('三芯耦合器中光脉冲在第二根光纤中传输')
view(129,44)
figure
waterfall(T(1:1:length(T)-1),z(1:(length(z)-1)/50:length(z)-1),abs(Ath3(1:(length(z)-1)/50:length(z)-1,:)))
%mesh(T(1:1:length(T)-1),z(1:1:length(z)-1),abs(Ath3(1:1:length(z)-1,:)))
xlabel('t')
ylabel('z')
zlabel('Ath3')
axis([T(1) T(length(T)) 0 z(length(z)) 0 1])
title('三芯耦合器中光脉冲在第三根光纤中传输')
view(129,44)






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -