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

📄 nrz_dpsk_pulse.asv

📁 光通信中非归零型差分相位调制信号建模与仿真分析
💻 ASV
字号:
clear
pack
%**************************************************************************
%input7为7位,特定码序列
input7=[1 0 0 1 1 0 1];
%input7=[1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1];
%**************************************************************************
%prbs为127位,7级伪随机码序列
% p7=[0 0 0 1 0 0 1];
% prbs7=[ones(1,120) input7];
% for ii=1:120;
%     a=input7;                              %用于保存输入
%     b=input7.*p7;                          %产生下位的输入
%     c=sum(b);
%     d=mod(c,2);
%     prbs7(121-ii)=d;
%     input7=[d a(1) a(2) a(3) a(4) a(5) a(6)];
% end
% a=0;                                       %论证1 0出现概率是相等
% b=0;
% for ii=1:127;
%     if prbs7(ii)==1
%         a=a+1;
%     else
%         b=b+1;
%     end
% end
% a=a/127;
% b=b/127;
%**************************************************************************
%脉冲初始情况的设定,
fs=2e10;                                    %输入电信号时钟,其输出光脉冲时钟为电信号两倍
ts=1/(2*fs);;                               %脉冲时间
p0=1;                                       %设定输入光功率
f0=1.93e14;                                %光波频率
n=1024;                                       %单个脉冲的取样点
%**************************************************************************
%y1为单个脉冲的包络函数
%t为产生全部脉冲的离散点,       
fwhm=ts/1.6;                                %半高全宽的取值比较关键!
t=linspace(-0.5*ts,0.5*ts,n); 
y1=p0*(sin((pi/2)*exp(-0.6931*(2*t/fwhm).^4)));                 

%**************************************************************************
%完成整个序列取样点的采集(加载数据信号到相位中)
m=length(input7);                           %input7为特定序列,换成prbs7则为伪随机序列

k=m*n;                                      %全部取样点的个数
yy=zeros(1,k);                              %产生取样点矩阵                              
for ii=1:m;
   if input7(ii)==1;                        %input7为特定序列,换成prbs7则为伪随机序列
       for jj=1:n;
      yy(((ii-1)*n+jj))=y1(jj);             %数据为1则相位相同
       end
   else
       for jj=1:n;
      yy(((ii-1)*n+jj))=exp(i*pi)*y1(jj);   %数据为0则相位相反
       end
   end
end
kk=length(yy);
%产生载波信号
wt=linspace(0,(ts*m),kk);
y=yy.*cos(2*pi*f0*wt);
%画出时域的图形
%画出单个脉冲的形状
figure(1);
yy2=y1;                                     %yy2为不加载波的单个脉冲
plot(t,abs(yy2).^2);
figure(2);
yy2=y1.*cos(2*pi*f0*t);                   %yy2为加载波的单个脉冲
plot(t,abs(yy2).^2);
%画出全部伪随机序列脉冲形状
xt=1:length(y);
xt=(ts/n)*xt;
figure(3);
plot(xt,abs(yy).^2);                        %输出不加载波的脉冲序列
% figure(4);
% plot(xt,abs(y).^2);                       %输出加载波的脉冲序列


⌨️ 快捷键说明

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