使用MATLAB实现2PSK调制与解调 您所在的位置:网站首页 matlab画二进制序列 使用MATLAB实现2PSK调制与解调

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

2023-09-15 06:20| 来源: 网络整理| 查看: 265

2PSK调制与解调

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

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

设计思路

在这里插入图片描述 在这里插入图片描述 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)=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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有