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

📄 msk.asv

📁 光通信中抑制载波型差分相位调制信号建模与仿真分析
💻 ASV
字号:
clear
pack
%**************************************************************************
%input7为7位,特定码序列
input72=[1 0 1 0 0 0 0];%偶数路比特
input71=[0 1 0 0 0 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=1e10;                                    %输入电信号时钟,其输出光脉冲时钟为电信号两倍
ts=1/(2*fs);                               %脉冲时间为25ps
p0=1;                                       %设定输入光功率
f0=1.930897e14;                              %光波频率
n=1024;                                     %单个脉冲的取样点
%**************************************************************************
%pulse为单个脉冲的包络函数
%t为产生单个脉冲的离散点,        
t=linspace(-0.0*ts,1.0*ts,n);                
pulse=p0*(sin((pi/2)*sin(2*pi*fs*(t+0.0*ts))))*exp(i*pi/2);        %占空比为2/3,即CSRZ

%**************************************************************************
%完成整个序列取样点的采集,数据加载到振幅上
%input7为特定序列,换成prbs7则为伪随机序列,
%注意:如换为input7,则以下有两处需要替换,并且上面prbs7的产生要注释掉。
m_odd=length(input71);                               %m为序列中脉冲个数
k=m_odd*n;                                          %k为全部取样点的个数,即序列中脉冲个数*单个脉冲的取样点
sequence_odd=zeros(1,k);                            %产生取样点矩阵,sequence为不加载波的序列                              
%**************************************************************************
%因为CSRZ-dpsk的脉冲既要考虑CS-RZ的相位变化也要考虑dpsk的相位变化
%这里考虑为CS-RZ奇数个脉冲无相位变化,偶数个有pi的相位变化,dpsk1码无相位变化,0码有相位变化
for ii=1:2:m_odd;%奇数脉冲无相位变化
    if input71(ii)==1; %为1码且奇数个
      pulse2_odd=pulse*input71(ii)*exp(i*pi/2);
      for jj=1:n;                         
         sequence_odd(((ii-1)*n+jj))=pulse2_odd(jj);
      end
    else
      pulse2_odd=(-1)*pulse*exp(i*pi/2);%为0码其奇数个相位变为pi
      for jj=1:n;                          
         sequence_odd(((ii-1)*n+jj))=pulse2_odd(jj);
      end
    end
end 
for ii=2:2:m_odd-1;%偶数脉冲有pi相位
     if input71(ii)==1;%为1码,且偶数个
        pulse2_odd=(-1)*pulse*input71(ii)*exp(i*pi/2);
        for jj=1:n;                            
          sequence_odd(((ii-1)*n+jj))=pulse2_odd(jj);
        end
     else
          pulse2_odd=pulse*exp(i*pi/2);%为0码,且偶数个,变换两次则相位无变化
        for jj=1:n;                            
          sequence_odd(((ii-1)*n+jj))=pulse2_odd(jj);
        end
    end
         
end
%**************************************************************************
%加上载波信号
wt=linspace(0,(ts*m_odd),k);
sequence_c_odd=sequence_odd.*exp(i*2*pi*f0*wt);         %sequence_c为加载波的序列,exp(i*2*pi*f0*wt)为光载波
pulse_c=pulse.*exp(i*2*pi*f0*t);                    %pulse_c为加载波的单个脉冲
%**************************************************************************
pulse_even=p0*(sin((pi/2)*sin(2*pi*fs*(t+0.0*ts-25e(-12)))))*exp(i*pi/2);        %占空比为2/3,即CSRZ

m_even=length(input72);                               %m为序列中脉冲个数
k=m_even*n;                                          %k为全部取样点的个数,即序列中脉冲个数*单个脉冲的取样点
sequence_even=zeros(1,k);                            %产生取样点矩阵,sequence为不加载波的序列                              
%**************************************************************************
%因为CSRZ-dpsk的脉冲既要考虑CS-RZ的相位变化也要考虑dpsk的相位变化
%这里考虑为CS-RZ奇数个脉冲无相位变化,偶数个有pi的相位变化,dpsk1码无相位变化,0码有相位变化
for ii=1:2:m_even;%奇数脉冲无相位变化
    if input72(ii)==1; %为1码且奇数个
      pulse2_even=pulse_even*input72(ii);
      for jj=1:n;                         
         sequence_even(((ii-1)*n+jj))=pulse2_even(jj);
      end
    else
      pulse2_even=(-1)*pulse_even;%为0码其奇数个相位变为pi
      for jj=1:n;                          
         sequence_even(((ii-1)*n+jj))=pulse2_even(jj);
      end
    end
end 
for ii=2:2:m_even-1;%偶数脉冲有pi相位
     if input72(ii)==1;%为1码,且偶数个
        pulse2_even=(-1)*pulse_even*input72(ii);
        for jj=1:n;                            
          sequence_even(((ii-1)*n+jj))=pulse2_even(jj);
        end
     else
          pulse2_even=pulse_even;%为0码,且偶数个,变换两次则相位无变化
        for jj=1:n;                            
          sequence_even(((ii-1)*n+jj))=pulse2_even(jj);
        end
    end
         
end
%**************************************************************************
%加上载波信号
wt=linspace(0,(ts*m_even),k);
sequence_c_even=sequence_even.*exp(i*2*pi*f0*wt);         %sequence_c为加载波的序列,exp(i*2*pi*f0*wt)为光载波
pulse_c_even=pulse_even.*exp(i*2*pi*f0*t);                    %pulse_c为加载波的单个脉冲
%**************************************************************************


%画出时域的图形
%画出单个脉冲的形状
% figure(1);
% plot(t/1e-12,abs(pulse).^2);                        %pulse为不加载波的单个脉冲
% ylabel('Normalized Power (au)');xlabel('Time (ps)');
% title('CSRZ-DPSK pulse');
% figure(2);
% plot(t/1e-12,abs(pulse_c).^2);
% ylabel('Normalized Power (au)');xlabel('Time (ps)');
% title('CSRZ-DPSK pulse');
%画出全部伪随机序列脉冲形状
%figure(3);
%plot(wt/1e-12,abs(sequence).^2);                          %输出不加载波的脉冲序列
%axis([0,175,0,1.2]);set(gca,'Xtick',[0:ts/1e-12:m*ts/1e-12]);
%ylabel('Normalized Power (au)');xlabel('Time (ps)');
%title('CSRZ-DPSK pulse');
 figure(4);
 plot(wt/1e-12,abs(sequence_c).^2);                        %输出加载波的脉冲序列
 axis([0,175,0,1.2]);set(gca,'Xtick',[0:ts/1e-12:m*ts/1e-12]);
 ylabel('Normalized Power (au)');xlabel('Time (ps)');
 title('CSRZ-DPSK pulse');

⌨️ 快捷键说明

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