易武 《MATLAB的差分码PSK调制解调实现》 第16页 共15页
for i=1:31 %设置循环差分码实现
cfm1(i)=xor(cn(i),cn(i+1)); %反差分异或运算 end cfm1(32)=0;
dn=[]; %预设一个矩阵存放一组数据 for n=1:2:31 %循环奇数个随机二进制序列 if cfm1(n)==0&cfm1(n+1)==0; dn((n+1)/2)=0; elseif cfm1(n)==0&cfm1(n+1)==1;
dn((n+1)/2)=1; %二进制序列01表示四进制1 elseif cfm1(n)==1&cfm1(n+1)==0;
dn((n+1)/2)=2; %二进制序列10表示四进制2 elseif cfm1(n)==1&cfm1(n+1)==1;
dn((n+1)/2)=3; %二进制序列11表示四进制3 end end fn=[];
for n=1:2:31 %循环奇数个随机二进制序列 if w((n+1)/2)==0;
fn(n)=0;fn(n+1)=0; %四进制序列0拆分为二进制00 elseif w((n+1)/2)==1;
fn(n)=0;fn(n+1)=1; %四进制序列1拆分为二进制01 elseif w((n+1)/2)==2;
fn(n)=1;fn(n+1)=0; %四进制序列2拆分为二进制10 elseif w((n+1)/2)==3;
fn(n)=1;fn(n+1)=1; %四进制序列3拆分为二进制11 end end
cfm2=[]; for i=1:31
cfm2(i)=xor(fn(i),fn(i+1));
易武 《MATLAB的差分码PSK调制解调实现》 第17页 共15页
end cfm2(32)=0;
en=[]; %预设一个矩阵存放一组数据 for n=1:2:31
if cfm2(n)==0&cfm2(n+1)==0;
en((n+1)/2)=0; %二进制序列00表示四进制0 elseif cfm2(n)==0&cfm2(n+1)==1;
en((n+1)/2)=1; %二进制序列01表示四进制1 elseif cfm2(n)==1&cfm2(n+1)==0;
en((n+1)/2)=2; %二进制序列10表示四进制2 elseif cfm2(n)==1&cfm2(n+1)==1;
en((n+1)/2)=3; %二进制序列11表示四进制3 end end
N=length(y); %已调信号的长度 f=(0:N-1)*Fs/N-Fs/2; % 频率矢量 figure
subplot(4,2,1);plot(f, abs(fft(an,N))); %对数字基带信号进行傅立叶变换 绘制数字基带信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题 title('基带数字信号频谱'); grid on;
axis([-600 600 0 40]); %设置图形标题
subplot(4,2,2);plot(f, abs(fft(bn,N))); %绘制数字差分信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题 title('数字差分信号频谱'); grid on; %设置图形标题 axis([-600 600 0 40]);
subplot(4,2,3);plot(f, abs(fft(y,N))); %绘制无噪声DPSK调制信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题 title('无噪声DPSK调制信号频谱'); grid on; %设置图形标题
易武 《MATLAB的差分码PSK调制解调实现》 第18页 共15页
axis([-600 600 0 40]);
subplot(4,2,7);plot(f, abs(fft(w,N))); %绘制无噪声4DPSK解调信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题
title('无噪声4DPSK解调信号频谱'); grid on; %设置图形标题 axis([-600 600 0 40]);
subplot(4,2,5);plot(f, abs(fft(en,N))); %绘制加噪声4DPSK调制信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题
title('无噪声4DPSK解调反差分信号频谱'); grid on; %设置图形标题 axis([-600 600 0 40]);
subplot(4,2,4);plot(f, abs(fft(modz,N))); %绘制加噪声4DPSK解调差分信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题
title('加噪声4DPSK已调信号频谱'); grid on; %设置图形标题 axis([-600 600 0 40]);
subplot(4,2,8);plot(f, abs(fft(z,N))); %绘制加噪声4DPSK解调信号频谱图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题
title('加噪声4DPSK解调信号频谱'); grid on; %设置图形标题 axis([-600 600 0 40]);
subplot(4,2,6);plot(f,abs(fft(dn,N))); %绘制数字基带信号时域波形图
xlabel('频率(HZ)');ylabel('幅值'); %设置横纵轴坐标标题 title('加噪声4DPSK解调反差分信号频谱'); %设置图形标题 grid on;
axis([-600 600 0 40]); figure
subplot(4,2,1);stairs(an) %绘制数字基带信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('基带数字信号波形'); %设置图形标题
易武 《MATLAB的差分码PSK调制解调实现》 第19页 共15页
grid on;
axis([1 16 0 4]);
subplot(4,2,2);stairs(bn) %绘制数字差分信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('数字差分信号时域波形'); %设置图形标题 grid on;axis([1 16 0 4]);
subplot(4,2,3);plot(y) %绘制无噪声DPSK调制信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('无噪声4DPSK调制信号时域波形'); %设置图形标题 grid on;axis([0 800 -2 2]);
subplot(4,2,7);stairs(w) %绘制无噪声DPSK解调信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('无噪声4DPSK解调信号时域波形'); %设置图形标题 grid on;axis([1 16 0 4]); subplot(4,2,5);stairs(en)
xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题
title('无噪声4DPSK解调反差分信号时域波形'); %设置图形标题 grid on;axis([1 16 0 4]); subplot(4,2,4);
plot(modz) %加噪声DPSK调制信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('加噪声4DPSK调制信号时域波形'); %设置图形标题 grid on;axis([0 800 -2 2]);
subplot(4,2,8);stairs(z) %绘制加噪声DPSK解调差分信号时域波形图
xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('加噪声4DPSK解调信号时域波形'); %设置图形标题 grid on;axis([1 16 0 4]);
subplot(4,2,6);stairs(dn) %绘制加噪声DPSK解调信号时域波形图 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题
title('加噪声4DPSK解调反差分信号时域波形'); %设置图形标题
易武 《MATLAB的差分码PSK调制解调实现》 第20页 共15页
grid on;axis([1 16 0 4]); figure
subplot(3,1,1);stairs(bn)
xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('数字差分信号时域波形'); %设置图形标题 grid on;
axis([1 16 0 4]);
subplot(3,1,2);plot(y) %绘制无噪声DPSK调制信号时域波形 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('无噪声4DPSK已调信号时域波形'); %设置图形标题 grid on;axis([0 800 -2 2]);
subplot(3,1,3);stairs(w) %绘制加噪声DPSK调制解调 xlabel('时间(t)');ylabel('幅值'); %设置横纵轴坐标标题 title('无噪声4DPSK解调信号时域波形'); %设置图形标题 grid on;axis([1 16 0 4]);