✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
我国社会经济发展速度非常快,网络技术也因此获得巨大的发展.在传输通信数据阶段需要利用光纤,本文基于Matlab模拟光纤信号光损耗。
⛄ 部分代码
clc
clear
close all
load('cross_Tm_all.mat')
tic
global sigmaes sigmaas sigmaap sigmaep tmax flag
global c n lambdap lambdas vp gamma_s gamma_p A Ntot L Tao_c Tao1 h l
lambdap=1550e-9; %
lambdas=1940e-9; %
sigmaep=interp1(cross_Tm(:,1),cross_Tm(:,2),lambdap*1e9); % emission
sigmaap=interp1(cross_Tm(:,1),cross_Tm(:,3),lambdap*1e9); % absorption
sigmaes=interp1(cross_Tm(:,1),cross_Tm(:,2),lambdas*1e9); % emission
sigmaas=interp1(cross_Tm(:,1),cross_Tm(:,3),lambdas*1e9); % absorption
sigmaes=4.75e-025;
sigmaas=0.38e-025;
sigmaap=1.5000e-025;
sigmaep=1e-026;
c=3e8; % 光速度
n=1.456; % 纤芯折射率
vp=2*pi*c/lambdap; % Hz
alpha=2.3e-3; % 光纤信号光损耗--用来计算腔寿命
l=0.50; % 增益光纤长度 [m]
L=1.0; % 总腔长 {m}
h=6.626e-34; % Planck constant
d=9e-6; % 纤芯直径
R1=0.99; % 端面反射率1
Roc=0.50; % 端面反射率2
Tao1=334e-6; % 3F4上能级寿命
Ntot=1.5e26; % 掺杂浓度 调用光纤掺杂浓度计算公式计算(基于吸收系数)
gamma_s=1+sigmaas/sigmaes;
gamma_p= sigmaep/sigmaap;
Tao_c=2*n*L/(c*(-log(R1*Roc)+2*alpha*L+0.04)) % 腔内光子寿命
A=pi*(d)^2/4; % 纤芯面积
%%
% CW=[0:0.5:5];
% for i=1:length(CW)
% 1 43ns 2 37 3 32 (150ns,50 peak)
% 1 51 2
CW=0
frep=500e3; %泵浦光重复频率
NO_pulses=15; % 泵浦脉冲个数(描述值)
dt=1e-9;
size_storage=NO_pulses*round(1/frep/dt);
Ppump=zeros(1,size_storage)+CW; %泵浦光功率存储空间
pump_pulse_width=300e-9; %泵浦脉冲宽度 20ns
tmax=size_storage*dt;
Ptt = linspace(0,tmax,size_storage); %泵浦光时间定义
Pump_peak_power=6;
Pump_average_power=Pump_peak_power*pump_pulse_width*frep;
N=size_storage;
for i=1:size_storage
if mod(i,round(1/frep/dt))==1
Ppump(i:i+round(pump_pulse_width/dt))=Pump_peak_power+CW;
end
end
plot(Ppump)
flag=1;
options = odeset('RelTol', 1e-11,'MaxStep',dt);
IC = [1.2559e25 5.9989e15]; % y(t=0) 初始时刻 上能级N1粒子数 腔内光子数密度值
[T Y] = ode45(@(t,y) function_gain_switch(t,y,Ptt,Ppump),Ptt,IC,options); % Solve ODE
toc
Y(end,1)
Y(end,2)
figure
linewidth = 2;
linewidth1 = 1;
fontsize = 18;
YY_Position=[0.150 0.1900 0.79 0.73];
figure
h=plot(T.*1e6,Ppump/max(Ppump)*0.8+1,'-',T.*1e6,Y(:,2)/max(Y(end/2:end,2))*0.8,'-'); %%max必须为稳定后的峰值,初始脉冲不稳,不可用
set(gca,'FontSize',fontsize,'FontName','Times New Roman','FontWeight','bold','linewidth',linewidth1,'Position',YY_Position);
set(h(1),'linewidth',2);
set(h(2),'linewidth',2);
%set(h(3),'linewidth',2);
axis([0,max(T.*1e6),-0.2,3]);
xlabel('Time(\mus)');
ylabel('Intensity(a.u.)');
hh=legend('Pump pulse','Signal pulse');
set(hh,'Box','off','Position',[0.7 0.75 0.151 0.132]);
figure
plot(T,0.5*Ppump/max(Ppump)+1.2,T,Y(1:end,1)/max(Y(1:end,1)),T,Y(1:end,2)/max(Y(1:end,2)));
%%%%%脉宽计算%%%%%%%%%%%%%
T_step=T(2)-T(1);
yy=Y(end-round(1/frep/dt):end,2);%%获取最后一个脉冲(注看脉冲完整性)
figure
plot(T(end-round(1/frep/dt):end),yy)
yy=yy-min(yy);%%消除过零点
yy=yy-max(yy)/2; %% 移动后3db 位置位于零点处
y1=yy./abs(yy); %% 所有数据进行-1 0 1 化,方便进行统计 %% 此种方法仅适用于后面的脉冲低于主脉冲峰值的一半
y_digtal=find(y1==1);%% 统计获得所有1的位置
pulsewide=T_step*(length(y_digtal)-1);%%% 如果对脉宽较宽,采样带你很密集,此项可以认识是实际脉宽
%%%%%对于过零点的差异性计算,此处默认进行了线性拟合%%%%%%%
error_f=T_step*yy(y_digtal(1))/(yy(y_digtal(1))-yy(y_digtal(1)-1));
error_f1=T_step*yy(y_digtal(1))/(yy(y_digtal(end))-yy(y_digtal(end)+1));
pulsewide_real=pulsewide+error_f+error_f1
⛄ 运行结果
⛄ 参考文献
[1] 刘群, 郭燕, 石砚斌. 基于Matlab的光纤激光器光谱模式分析软件的设计[J]. 激光杂志, 2013, 34(4):2.
[2] 王敬辉, 林永峰. 基于LMS算法的光纤通信系统的MATLAB仿真[J]. 电脑知识与技术:学术交流, 2013.
[3] 周广丽. 基于弯曲损耗的光纤温度传感器的研究[J]. 中国科学院长春光学精密机械与物理研究所, 2008.