📄 nrz_dpsk_pulse.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 + -