使用MATLAB实现2PSK调制与解调

2PSK调制与解调

试编写2PSK.M文件实现对数字信号的2PSK调制与解调的matlab仿真。要求

  1. 信号通过加噪信道;
  2. 显示PSK调制波形及解调波形;
  3. 对比输入和输出波形;

设计思路

在这里插入图片描述
在这里插入图片描述
3、为了更加逼近真实情况,考虑到信号在无线信道中存在衰减和多径衰落,所以要将编码后的信号进行调制,以便于在无线信道中传输,采用2PSK调制方式,调制载波表达式为在这里插入图片描述

调制信号波形及其频谱如下图 所示
在这里插入图片描述
4、在信道中对传输的信号调加噪声,添加噪声后的信号波形及其频谱如下图 所示
在这里插入图片描述
5、在接收端,由于采用的2PSK调制方式,所以解调只能采用相干解调方式恢复原始数据序列,对接受到的信号进行相干解调的信号波形及其波形和频谱如下图 所示:
在这里插入图片描述
6、由于信道中存在噪声,所以接收端接收的信号也存在一定噪声,为了消除噪声,需要在接收端添加一个滤波器去掉不必要的噪声。本实验采用一个butterworth低通滤波器进行滤波。滤波器的幅频特性曲线如下图 所示:
在这里插入图片描述
使用设计的滤波器对接收端解调的信号进行滤波得到的信号波形及其频谱如图 所示

7、对滤波器输出的信号进行一个抽样判决即可得到最终的接收信号
在这里插入图片描述
接收端接受到的信号与发送端发送的信号波形一致,只存在一定延时,这是由于信号传输延时和处理延时造成的
在这里插入图片描述
源代码:

close all;
clear
clc; 

%%
max=11; 
s=randi([0 1],max,1); %产生介于0-1之间的长度为max的1列随机序列
 Sinput=[] ; 
for n=1:length(s)
    if s(n)==0
        A=zeros(1,2000);    %码元宽度为2000
    else
        s(n)=1;
        A=ones(1,2000);
    end 
    Sinput=[Sinput A]; 
end 
s
% Sinput      %Sinput包含勒22000列个二进制数字
figure(1);
subplot(2,1,1);
plot(Sinput);
grid on 
axis([0,2000*length(s),-2,2]);
title('输入信号波形'); 
Sbianma=encode(s,15,11,'hamming') %汉明码编码后序列,一行15列的二进制数字
a1=[];
b1=[];
f=100
0; 
t=0:2*pi/1999:2*pi; 
for n=1:length(Sbianma)
    if Sbianma(n)==0
        B=zeros(1,2000);  %每个值2000个点
    else
        Sbianma(n)=1; 
        B=ones(1,2000);
    end 
    a1=[a1 B];  %s(t),码元宽度2000
    c=cos(2*pi*f*t);  %载波信号 
    b1=[b1 c];  %与s(t)等长的载波信号,变为矩阵形式
end 
figure(2);
subplot(2,1,1)
plot(a1);
grid on; 
axis([0 2000*length(Sbianma) -2 2]);
title('编码后二进制信号序列');
subplot(2,1,2); 
plot(abs(fft(a1)));
axis([0 2000*length(Sbianma) 0 400]);
title('编码后二进制信号序列频谱');
a2=[];
b2=[];
for n=1:length(Sbianma)
    if Sbianma(n)==0
        C=ones(1,2000);  %每个值2000点
        d=cos(2*pi*f*t);  %载波信号
    else
        Sbianma(n)=1; 
        C=ones(1,2000);
        d=cos(2*pi*f*t+pi);  %载波信号
    end 
    a2=[a2 C];  %s(t),码元宽度2000
    b2=[b2 d];  %与s(t)等长的载波信号 
end 
tiaoz=a2.*b2;  %e(t)调制
figure(3);
subplot(2,1,1);
plot(tiaoz);
grid on; 
axis([0 2000*length(Sbianma) -2 2]);
title('2psk已调制信号');
subplot(2,1,2); 
plot(abs(fft(tiaoz))); 
axis([0 2000*length(Sbianma) 0 400]);
title('2psk信号频谱') 
%-----------------带有高斯白噪声的信道---------------------
tz=awgn(tiaoz,10);  %信号tiaoz加入白噪声,信噪比为10
figure(4);
subplot(2,1,1);
plot(tz);
grid on 
axis([0 2000*length(Sbianma) -2 2]);
title('通过高斯白噪声后的信号');
subplot(2,1,2); 
plot(abs(fft(tz))); 
axis([0 2000*length(Sbianma) 0 800]);
title('加入白噪声的2psk信号频谱'); 
%-------------------同步解调-------------
jiet=2*b1.*tz;  %同步解调
figure(5); 
subplot(2,1,1);
plot(jiet);
grid on 
axis([0 2000*length(Sbianma) -2 2]);
title('相干解调后的信号波形')
subplot(2,1,2);
plot(abs(fft(jiet))); 
axis([0 2000*length(Sbianma) 0 800]);
title('相干解调后的信号频谱');
%----------------------低通滤波器--------------------------- 
fp=500;
fs=700;
rp=3;
rs=20;
fn=11025; 
ws=fs/(fn/2); 
wp=fp/(fn/2);  %计算归一化角频率 
[n,wn]=buttord(wp,ws,rp,rs);  %计算阶数和截止频率
[b,a]=butter(n,wn);  %计算H(z)
figure(6);
freqz(b,a,1000,11025);      %绘制低通滤波器的幅频特性曲线
% subplot(2,1,1); 
axis([0 40000 -100 3])
title('低通滤波器频谱图');
jt=filter(b,a,jiet);
figure(7);
subplot(2,1,1);
plot(jt);
grid on 
axis([0 2000*length(Sbianma) -2 2]);
title('经低通滤波器后的解调信号波形');
subplot(2,1,2);
plot(abs(fft(jt))); 
axis([0 2000*length(Sbianma) 0 800]);
title('经低通滤波器后的解调信号频率'); 
%-----------------------抽样判决--------------------------
for m=1:2000*length(Sbianma)
    if jt(m)<0
        jt(m)=1;
    else jt(m)>0
        jt(m)=0;
    end
end
figure(8);
subplot(2,1,1);
plot(jt)
grid on 
axis([0 2000*length(Sbianma) -2 2]);
title('经抽样判决后信号jt(t)波形')
subplot(2,1,2); 
plot(abs(fft(jt))); 
axis([0 2000*length(Sbianma) 0 800]); 
title('经抽样判决后的信号频谱');
grid on;
n=1:2000:2000*length(Sbianma);
a5=[]; 
a5=[a5 jt(n)]; 
s1=decode(a5,15,11,'hamming');
a6=[]; 
for n=1:length(s1)
    if s1(n)==0 
        G=zeros(1,2000);
    else
        s1(n)=1;
        G=ones(1,2000);
    end 
    a6=[a6 G];
end 
figure(1);
subplot(2,1,2);
plot(a6);
grid on
axis([0 2000*length(s) -2 2]);
title('汉明码译码后的波形')
grid on


  • 56
    点赞
  • 358
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
clear all; close all; clc; max=10 g=zeros(1,max); g=randint(1,max);%长度为max的随机二进制序列 cp=[];mod1=[];f=2*2*pi;t=0:2*pi/199:2*pi; for n=1:length(g); if g(n)==0; A=zeros(1,200);%每个值200个点 else g(n)==1; A=ones(1,200); end cp=[cp A]; %s(t),码元宽度200 c=cos(f*t);%载波信号 mod1=[mod1 c];%与s(t)等长的载波信号,变为矩阵形式 end figure(1);subplot(4,2,1);plot(cp);grid on; axis([0 200*length(g) -2 2]);title('二进制信号序列'); cm=[];mod=[]; for n=1:length(g); if g(n)==0; B=ones(1,200);%每个值200个点 c=cos(f*t); %载波信号 else g(n)==1; B=ones(1,200); c=cos(f*t+pi); %载波信号 end cm=[cm B]; %s(t),码元宽度200 mod=[mod c]; %与s(t)等长的载波信号 end tiaoz=cm.*mod;%e(t)调制 figure(1);subplot(4,2,2);plot(tiaoz);grid on; axis([0 200*length(g) -2 2]);title('2PSK调制信号'); figure(2);subplot(4,2,1);plot(abs(fft(cp))); axis([0 200*length(g) 0 400]);title('原始信号频谱'); figure(2);subplot(4,2,2);plot(abs(fft(tiaoz))); axis([0 200*length(g) 0 400]);title('2PSK信号频谱'); %带有高斯白噪声的信道 tz=awgn(tiaoz,10);%信号tiaoz加入白噪声,信噪比为10 figure(1);subplot(4,2,3);plot(tz);grid on axis([0 200*length(g) -2 2]);title('通过高斯白噪声信道后的信号'); figure(2);subplot(4,2,3);plot(abs(fft(tz))); axis([0 200*length(g) 0 400]);title('加入白噪声的2PSK信号频谱'); jiet=2*mod1.*tz;%同步解调 figure(1);subplot(4,2,4);plot(jiet);grid on axis([0 200*length(g) -2 2]);title('相乘后信号波形') figure(2);subplot(4,2,4);plot(abs(fft(jiet))); axis([0 200*length(g) 0 400]);title('相乘后信号频谱'); %低通滤波器 fp=500;fs=700;rp=3;rs=20;fn=11025; ws=fs/(fn/2); wp=fp/(fn/2);%计算归一化角频率 [n,wn]=buttord(wp,ws,rp,rs);%计算阶数和截止频率 [b,a]=butter(n,wn);%计算H(z) figure(4);freqz(b,a,1000,11025);subplot(2,1,1); axis([0 4000 -100 3 ]) title('LPF幅频相频图'); jt=filter(b,a,jiet); figure(1);subplot(4,2,5);plot(jt);grid on axis([0 200*length(g) -2 2]);title('经低通滤波器后信号波形') figure(2);subplot(4,2,5);plot(abs(fft(jt))); axis([0 200*length(g) 0 400]);title('经低通滤波器后信号频谱'); %抽样判决 for m=1:200*length(g); if jt(m)=0;
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值