基于Matlab的QPSK调制与解调系统仿真

合集下载

通信原理的MATLAB实验 QPSK的调制解调报告

通信原理的MATLAB实验 QPSK的调制解调报告

通信原理实验项目名称:QPSK的调制解调一、实验任务任意输入长度为64比特的二进制信息,采用QPSK系统传输。

码元速率为1Bps,载波频率为10Hz,采样频率为40 Hz,利用Matlab画出:(1)调制后的信号波形;(2)经信道传输后的信号波形(假设加性高斯白噪声,其功率为信号功率1/10);(3)(3)任意解调方法解调后的信号波形。

二、流程图三、完整程序Fd=1; %码元速率Fc=10; %载波频率Fs=40; %采样频率N=Fs/Fd;df=10;x=[ 1 1 0 1 1 0];%任意输入64比特的二进制信息M=2; %进制数SNRpBit=10;%加性高斯白噪声,其功率为信号功率的1/10,即信噪比为10 SNR=SNRpBit/log2(M); %转换为码元速率seed=[12345 54321];numPlot=length(x);figure(1)%画出输入二进制序列subplot(211);stem([0:numPlot-1],x(1:numPlot),'bx');title('输入波形’)%调制y=dmod(x,Fc,Fd,Fs,'fsk',M,df);numModPlot=numPlot*Fs;t=[0:numModPlot-1]./Fs;subplot(212);%画出调制后的信号plot(t,y(1:length(t)),'b-');axis([min(t) max(t) -1.5 1.5]);title('调制后的信号')%在已调信号中加入高斯白噪声randn('state',seed(2));y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%相干解调figure(2)subplot(211);plot(t,y(1:length(t)),'b-');%画出经过信道的实际信号axis([min(t) max(t) -1.5 1.5]);title('加入高斯白噪声后的已调信号')%带输出波形的相干M元频移键控解调subplot(212);stem([0:numPlot-1],x(1:numPlot),'bx');hold on;stem([0:numPlot-1],z1(1:numPlot),'ro');hold off;axis([0 numPlot -0.5 1.5]);title('相干解调后的信号')四、波形。

基于 MATLAB 的QPSK系统仿真设计与实现

基于 MATLAB 的QPSK系统仿真设计与实现

通信系统仿真设计实训报告1.课题名称:基于MATLAB 的QPSK系统仿真设计与实现学生学号:学生:所在班级:任课教师:2016年10月25日目录1.1QPSK系统的应用背景简介 (3)1.2 QPSK实验仿真的意义 (3)1.3 实验平台和实验容 (3)1.3.1实验平台 (3)1.3.2实验容 (3)二、系统实现框图和分析 (4)2.1、QPSK调制部分, (4)2.2、QPSK解调部分 (5)三、实验结果及分析 (6)3.1、理想信道下的仿真 (6)3.2、高斯信道下的仿真 (7)3.3、先通过瑞利衰落信道再通过高斯信道的仿真 (8)总结: (10)参考文献: (11)附录 (12)1.1QPSK系统的应用背景简介QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。

在19世纪80年代初期,人们选用恒定包络数字调制。

这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。

19世纪80年代中期以后,四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。

1.2 QPSK实验仿真的意义通过完成设计容,复习QPSK调制解调的基本原理,同时也要复习通信系统的主要组成部分,了解调制解调方式中最基础的方法。

了解QPSK的实现方法及数学原理。

并对“通信”这个概念有个整体的理解,学习数字调制中误码率测试的标准及计算方法。

同时还要复习随机信号中时域用自相关函数,频域用功率谱密度来描述平稳随机过程的特性等基础知识,来理解高斯信道中噪声的表示方法,以便在编程中使用。

理解QPSK调制解调的基本原理,并使用MATLAB编程实现QPSK信号在高斯信道和瑞利衰落信道下传输,以及该方式的误码率测试。

MATLAB_QPSK调制与解调-(4820)

MATLAB_QPSK调制与解调-(4820)

实验名称: QPSK仿真系统一、实验目的:1、学会 QPSK 调制与解调系统的构成2、学会 QPSK 调制与解调系统的各模块的构建3、学会误码率与误符号率的统计方法以及Matlab 算法二、实验原理:1、QPSK:四进制绝对相移键控,也称为多进制数字相位调制,利用载波的四种不同相位状态来表征数字信息的调制方式。

2、QPSK 的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法。

调制与解调系统的构成:AWGN产生器ncs rI Ib?b0,1序列QPSKr QPSKs判决器产生器映射Q反映射QnsAWGN产生器比较器误比特统计误符号统计3、各模块的实现方法:(1)、信源的产生:使用randint(m,n,2)函数产生一个 m 行 n 列的随机二进制数列(2)、QPSK 符号映射:将产生的 0, 1 比特流按照 QPSK 调制方式进行映射,本实验采用π/4 QPSK 的调制方式,图为:10000111(3)、AWGN 信号产生: AWGN 产生器就是产生满足均值为 0,方差为 1 的高斯白噪声。

实验中使用 randn(m,n)函数产生一个 m 行 n 列的高斯噪声序列。

(4)、信号幅度控制:根据 AWGN 信道模型,接收信号可以分别表示为r Q s Q n Qα 就是当噪声功率归一化为r I s I n I1(0均值,方差为 1)时,根据信噪比关系而计算出来的信号平均幅度SNR 10log v s2vs2SNR v2sqrt v n10 ^10 nv s( 5)、QPSK 反映射及判决:对接收到的信号在 4 种可能的四种信号向量 [(1,0), (0,1), (-1,0), (0,-1)] 上投影 (即进行点积 )。

投影最大的值所对应的信号向量就是所发送信号的符号值,然后恢复出比特流(6)、误码率及误符号率统计:误码率:将检测出来的比特流和发送的原始比特流进行比较,统计出出现错误的比特数误符号率:将检测出来的比特流变成两组,构成符号,和发送端符号映射后的符号流进行比较,只要符号中任错一 bit,就算该符号出错。

基于Matlab的QPSK调制解调仿真设计与研究设计说明书

基于Matlab的QPSK调制解调仿真设计与研究设计说明书

理工大学计算机与通信工程学院通信工程专业设计说明书基于Matlab/Simulink的QPSK调制解调仿真设计与研究目录摘要 (2)第一章前言 (2)1.1 专业设计任务及要求 (2)1.2 Matlab简介 (2)1.3 Matlab下的simulink简介 (3)1.4 通信系统模型 (3)第二章 QPSK调制 (4)2.1 QPSK介绍 (4)2.2 QPSK调制原理 (4)2.2.1 相乘法 (4)2.2.2 选择法 (5)2.3 QPSK调制原理框图 (6)2.4 QPSK调制方式的Matlab仿真 (6)2.5 QPSK调制方式Matlab-simulink仿真 (7)2.5.1 simulink调制建模 (7)2.5.2 simulink调制仿真结果 (8)第三章 QPSK解调 (13)3.1QPSK解调原理 (13)3.2 QPSK解调原理框图 (13)3.3QPSK解调方式Matlab仿真 (13)3.4QPSK解调方式的Matlab-simulink仿真 (14)3.4.1 QPSK解调建模 (14)3.4.2 传输信道 (16)3.4.3 仿真结果 (16)3.5 仿真结果分析 (18)第四章 QPSK通信系统性能分析 (19)第五章结论 (19)参考文献 (20)附录 (20)摘要正交相移键控(QPSK),是一种数字调制方式。

QPSK技术具有抗干扰能力好、误码率低、频谱利用效率高等一系列优点。

论文主要介绍了正交相移键控(QPSK)的概况,以及正交相移键控QPSK的调制解调概念和原理,利用Matlab中M文件和Simulink模块对QPSK的调制解调系统进行了仿真,对QPSK在高斯白噪声信道中的性能进行了,分析了解Simulink中涉及到QPSK的各种模块的功能。

【关键词】Matlab QPSK Simulnk 仿真第一章前言1.1 专业设计任务及要求1了解并掌握QPSK调制与解调的基本原理;2在通信原理课程的基础上设计与分析简单的通信系统;3学会利用MATLAB7.0编写程序进行仿真,根据实验结果能分析所设计系统的性能。

QPSK通信系统性能分析与MATLAB仿真

QPSK通信系统性能分析与MATLAB仿真

QPSK通信系统性能分析与MATLAB仿真QPSK是一种常见的调制方式,广泛应用于数字通信系统中。

在QPSK通信系统中,传输的数据被分为两个相互正交的子载波进行调制,每个子载波可以携带2位二进制数据。

本文将对QPSK通信系统的性能进行分析,并使用MATLAB进行仿真。

首先,我们需要了解QPSK调制的基本原理。

在QPSK中,发送端的数据被分为两个二进制数据流,分别称为I路和Q路。

通过调制器对I路和Q路进行调制生成正交的载波信号,然后进行并行传输。

接收端接收到信号后,通过对两路信号进行解调,并将解调后的数据进行重新组合,得到原始数据。

为了分析QPSK通信系统的性能,我们需要考虑到噪声的影响。

在传输过程中,信号会受到各种噪声的干扰,如加性高斯白噪声。

这些噪声会使得接收信号误码率增加。

我们可以使用误码率(Bit Error Rate)来评估系统的性能,误码率是指发送的比特和接收到的比特不一致的比率。

为了进行性能分析,我们可以进行理论分析和仿真两个步骤。

在理论分析中,我们可以通过理论计算得到系统的误码率曲线。

而在仿真过程中,我们可以通过编写一段MATLAB代码来模拟整个通信系统,然后进行模拟传输并统计误码率。

在仿真过程中,我们首先需要生成发送端的数据流。

这可以通过随机生成0和1的序列来实现。

然后,我们将数据流分为I路和Q路,并对每一路进行调制生成载波信号。

接下来,我们引入噪声,在信号上添加高斯白噪声。

然后,我们将接收到的信号进行解调,并将解调后的数据重新组合。

最后,我们统计误码率和信噪比(Signal-to-Noise Ratio)之间的关系,并绘制性能曲线。

通过MATLAB进行仿真,我们可以调整信噪比,并观察误码率的变化。

通过仿真实验,我们可以得到系统在不同信噪比下的性能表现。

通过比较理论结果和仿真结果,我们可以验证我们的分析是否准确。

总结起来,QPSK通信系统的性能分析是一个重要的研究课题。

通过理论分析和MATLAB仿真,我们可以得到系统在不同信噪比下的性能表现,并且验证我们的分析是否准确。

QPSK调制与解调在MATLAB平台上的实现(word文档良心出品)

QPSK调制与解调在MATLAB平台上的实现(word文档良心出品)

QPSK调制与解调在MATLAB平台上的实现QPSK即四进制移向键控(Quaternary Phase Shift Keying),它利用载波的四种不同相位来表示数字信息,由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。

两个二进制码元中的前一个码元用a表示,后一个码元用b表示。

QPSK信号可以看作两个载波正交2PSK信号的合成,下图表示QPSK正交调制器。

由QPSK信号的调制可知,对它的解调可以采用与2PSK信号类似的解调方法进行解调。

解调原理图如下所示,同相支路和正交支路分别采用相干解调方式解调,得到()Q t,经过抽样判决和并/串交换器,将上下支路得到的并行I t和()数据恢复成串行数据。

% 调相法clear allclose allt=[-1:0.01:7-0.01];tt=length(t);x1=ones(1,800);for i=1:ttif (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7);x1(i)=1;else x1(i)=-1;endendt1=[0:0.01:8-0.01];t2=0:0.01:7-0.01;t3=-1:0.01:7.1-0.01;t4=0:0.01:8.1-0.01;tt1=length(t1);x2=ones(1,800);for i=1:tt1if (t1(i)>=0 & t1(i)<=2) | (t1(i)>=4& t1(i)<=8);x2(i)=1;else x2(i)=-1;endendf=0:0.1:1;xrc=0.5+0.5*cos(pi*f);y1=conv(x1,xrc)/5.5;y2=conv(x2,xrc)/5.5;n0=randn(size(t2));f1=1;i=x1.*cos(2*pi*f1*t);q=x2.*sin(2*pi*f1*t1);I=i(101:800);Q=q(1:700);QPSK=sqrt(1/2).*I+sqrt(1/2).*Q;QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0;n1=randn(size(t2));i_rc=y1.*cos(2*pi*f1*t3);q_rc=y2.*sin(2*pi*f1*t4);I_rc=i_rc(101:800);Q_rc=q_rc(1:700);QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);QPSK_rc_n1=QPSK_rc+n1;figure(1)subplot(4,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列');subplot(4,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列');subplot(4,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列'); subplot(4,1,4);plot(t2,QPSK_rc_n1);axis([-1 8 -1 1]);ylabel('加入噪声');效果图:% 设定T=1,加入高斯噪声clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;n0=rand(size(t1));I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;% 解调I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);% 低通滤波I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;% 抽样判决data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];end;bit_recover=[];for i=1:20:20000if sum(data_recover(i:i+19))>0data_recover_a(i:i+19)=1;bit_recover=[bit_recover 1];elsedata_recover_a(i:i+19)=-1;bit_recover=[bit_recover -1];endenderror=0;dd = -2*bit_in+1;ddd=[dd'];ddd1=repmat(ddd,20,1);for i=1:2e4ddd2(i)=ddd1(i);endfor i=1:1e3if bit_recover(i)~=ddd(i)error=error+1;endendp=error/1000;figure(1)subplot(2,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');subplot(2,1,2);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列'); 效果图:% 设定T=1, 不加噪声clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;t=0:0.1:1e3-0.1;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);% 解调I_demo=QPSK_rc.*cos(2*pi*f1*t1);Q_demo=QPSK_rc.*sin(2*pi*f1*t1);I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)]; end;ddd = -2*bit_in+1;ddd1=repmat(ddd',10,1);for i=1:1e4ddd2(i)=ddd1(i);endfigure(1)subplot(4,1,1);plot(t3,I);axis([0 20 -6 6]);subplot(4,1,2);plot(t3,Q);axis([0 20 -6 6]);subplot(4,1,3);plot(t2,data_recover);axis([0 20 -6 6]); subplot(4,1,4);plot(t,ddd2);axis([0 20 -6 6]);效果图:% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(2*SNR)); end;title('QPSK误码率分析');semilogy(SNRindB1,smld_bit_err_prb,'*');axis([0 10 10e-8 1]);hold on;% semilogy(SNRindB1,smld_symbol_err_prb,'o'); semilogy(SNRindB2,theo_err_prb);legend('仿真比特误码率','理论比特误码率'); hold off;function[y]=Qfunct(x)y=(1/2)*erfc(x/sqrt(2));function[pb,ps]=cm_sm32(SNRindB)N=10000;E=1;SNR=10^(SNRindB/10);sgma=sqrt(E/SNR)/2;s00=[1 0];s01=[0 1];s11=[-1 0];s10=[0 -1];for i=1:Ntemp=rand;if (temp<0.25)dsource1(i)=0;dsource2(i)=0;elseif (temp<0.5)dsource1(i)=0;dsource2(i)=1;elseif (temp<0.75)dsource1(i)=1;dsource2(i)=0;elsedsource1(i)=1;dsource2(i)=1;end;end;numofsymbolerror=0;numofbiterror=0;for i=1:Nn=sgma*randn(size(s00));if((dsource1(i)==0)&(dsource2(i)==0))r=s00+n;elseif((dsource1(i)==0)&(dsource2(i)==1)) r=s01+n;elseif((dsource1(i)==1)&(dsource2(i)==0)) r=s10+n;elser=s11+n;end;c00=dot(r,s00);c01=dot(r,s01);c10=dot(r,s10);c11=dot(r,s11);c_max=max([c00 c01 c10 c11]);if (c00==c_max)decis1=0;decis2=0;elseif(c01==c_max)decis1=0;decis2=1;elseif(c10==c_max)decis1=1;decis2=0;elsedecis1=1;decis2=1;end;symbolerror=0;if(decis1~=dsource1(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(decis2~=dsource2(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(symbolerror==1)numofsymbolerror=numofsymbolerror+1;end;end;ps=numofsymbolerror/N;pb=numofbiterror/(2*N);效果图:11。

MATLAB_QPSK调制与解调

MATLAB_QPSK调制与解调

实验名称:QPSK仿真系统一、实验目的:1、学会QPSK调制与解调系统的构成2、学会QPSK调制与解调系统的各模块的构建3、学会误码率与误符号率的统计方法以及Matlab算法二、实验原理:1、QPSK:四进制绝对相移键控,也称为多进制数字相位调制,利用载波的四种不同相位状态来表征数字信息的调制方式。

2、QPSK的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法。

调制与解调系统的构成:3、各模块的实现方法:(1)、信源的产生:使用randint(m,n,2)函数产生一个m行n列的随机二进制数列(2)、QPSK符号映射:将产生的0,1比特流按照QPSK调制方式进行映射,本实验采用π/4 QPSK的调制方式,图为:(3)、AWGN 信号产生:AWGN 产生器就是产生满足均值为0,方差为1的高斯白噪声。

实验中使用randn(m,n)函数产生一个m 行n 列的高斯噪声序列。

(4)、信号幅度控制:根据AWGN 信道模型,接收信号可以分别表示为α就是当噪声功率归一化为1(0均值,方差为1)时,根据信噪比关系而计算出来的信号平均幅度(5)、QPSK 反映射及判决 :对接收到的信号在4种可能的四种信号向量[(1,0), (0,1), (-1,0), (0,-1)]上投影(即进行点积)。

投影最大的值所对应的信号向量就是所发送信号的符号值,然后恢复出比特流(6)、误码率及误符号率统计:误码率:将检测出来的比特流和发送的原始比特流进行比较,统计出出现错误的比特数误符号率:将检测出来的比特流变成两组,构成符号,和发送端符号映射后的符号流进行比较,只要符号中任错一bit ,就算该符号出错。

统计出现错误的符号数 三、 实验内容:1、调制与解调I I Ir s n α=+Q Q Qr s n α=+22210log 10^10s s n n v SNR SNR v sqrt v v ⎛⎫⎛⎫⎛⎫=⇒=* ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭s v α=clear allclose all% 调制bit_in = randint(1e3, 1, [0 1]);bit_I = bit_in(1:2:1e3);bit_Q = bit_in(2:2:1e3);data_I = -2*bit_I+1;data_Q = -2*bit_Q+1;data_I1=repmat(data_I',20,1);data_Q1=repmat(data_Q',20,1);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;n0=rand(size(t1));I_rc=data_I2_rc.*cos(2*pi*f1*t1);Q_rc=data_Q2_rc.*sin(2*pi*f1*t1); QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;% 解调I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);% 低通滤波I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_recover(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;% 抽样判决data_recover=[];for i=1:20:10000data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];end;bit_recover=[];for i=1:20:20000if sum(data_recover(i:i+19))>0data_recover_a(i:i+19)=1;bit_recover=[bit_recover 1];elsedata_recover_a(i:i+19)=-1;bit_recover=[bit_recover -1];endenderror=0;dd = -2*bit_in+1;ddd=[dd'];ddd1=repmat(ddd,20,1);for i=1:2e4ddd2(i)=ddd1(i);endfor i=1:1e3if bit_recover(i)~=ddd(i)error=error+1;endendp=error/1000;figure(1)subplot(2,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');subplot(2,1,2);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列');2、误码率仿真% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(2*SNR)); end;title('QPSK误码率分析');semilogy(SNRindB1,smld_bit_err_prb,'*');axis([0 10 10e-8 1]);hold on;% semilogy(SNRindB1,smld_symbol_err_prb,'o'); semilogy(SNRindB2,theo_err_prb);legend('仿真比特误码率','理论比特误码率'); hold off;function[y]=Qfunct(x)y=(1/2)*erfc(x/sqrt(2));function[pb,ps]=cm_sm32(SNRindB)N=10000;E=1;SNR=10^(SNRindB/10);sgma=sqrt(E/SNR)/2;s00=[1 0];s01=[0 1];s11=[-1 0];s10=[0 -1];for i=1:Ntemp=rand;if (temp<0.25)dsource1(i)=0;dsource2(i)=0;elseif (temp<0.5)dsource1(i)=0;dsource2(i)=1;elseif (temp<0.75)dsource1(i)=1;dsource2(i)=0;elsedsource1(i)=1;dsource2(i)=1;end;end;numofsymbolerror=0;numofbiterror=0;for i=1:Nn=sgma*randn(size(s00));if((dsource1(i)==0)&(dsource2(i)==0))r=s00+n;elseif((dsource1(i)==0)&(dsource2(i)==1)) r=s01+n;elseif((dsource1(i)==1)&(dsource2(i)==0)) r=s10+n;elser=s11+n;end;c00=dot(r,s00);c01=dot(r,s01);c10=dot(r,s10);c11=dot(r,s11);c_max=max([c00 c01 c10 c11]);if (c00==c_max)decis1=0;decis2=0;elseif(c01==c_max)decis1=0;decis2=1;elseif(c10==c_max)decis1=1;decis2=0;elsedecis1=1;decis2=1;end;symbolerror=0;if(decis1~=dsource1(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(decis2~=dsource2(i))numofbiterror=numofbiterror+1;symbolerror=1;end;if(symbolerror==1)numofsymbolerror=numofsymbolerror+1;end;end;ps=numofsymbolerror/N;pb=numofbiterror/(2*N);3、QPSK在AWGN信道下的仿真close allclcclear allSNR_DB=[0:1:12];sum=1000000;data= randsrc(sum,2,[0 1]);[a1,b1]=find(data(:,1)==0&data(:,2)==0);message(a1)=-1-j;[a2,b2]=find(data(:,1)==0&data(:,2)==1);message(a2)=-1+j;[a3,b3]=find(data(:,1)==1&data(:,2)==0);message(a3)=1-j;[a4,b4]=find(data(:,1)==1&data(:,2)==1);message(a4)=1+j;scatterplot(message)title('B点信号的星座图')A=1;Tb=1;Eb=A*A*Tb;P_signal=Eb/Tb;NO=Eb./(10.^(SNR_DB/10));P_noise=P_signal*NO;sigma=sqrt(P_noise);for Eb_NO_id=1:length(sigma)noise1=sigma(Eb_NO_id)*randn(1,sum);noise2=sigma(Eb_NO_id)*randn(1,sum);receive=message+noise1+noise2*j;resum=0;total=0;m1=find(angle(receive)<=pi/2&angle(receive)>0);remessage(1,m1)=1+j;redata(m1,1)=1;redata(m1,2)=1;m2= find( angle(receive)>pi/2&angle(receive)<=pi);remessage(1,m2)=-1+j;redata(m2,1)=0;redata(m2,2)=1;m3=find( angle(receive)>-pi&angle(receive)<=-pi/2);remessage(1,m3)=-1-j;redata(m3,1)=0;redata(m3,2)=0;m4=find( angle(receive)>-pi/2&angle(receive)<=0);remessage(1,m4)=1-j;redata(m4,1)=1;redata(m4,2)=0;[resum,ratio1]=symerr(data,redata);pbit(Eb_NO_id)=resum/(sum*2);[total,ratio2]=symerr(message,remessage);pe(Eb_NO_id)=total/sum;endscatterplot(receive)title('C点信号的星座图')Pe=1-(1-1/2*erfc(sqrt(10.^(SNR_DB/10)/2))).^2;Pbit=1/2*erfc(sqrt(10.^(SNR_DB/10)/2));figure(3)semilogy(SNR_DB,pe,':s',SNR_DB,Pe,'-*',SNR_DB,pbit,'-o',SNR_DB,Pbit,':+')legend('QPSK仿真误码率','QPSK理论误码率','QPSK仿真误比特率','QPSK理论误比特率',1) xlabel('信噪比/dB')ylabel('概率P')gird on结果:4、QPSK在AWGN信道下的性能检测clear all;%对随机序列产生的方法初始化s = RandStream('mt19937ar','Seed', 5489);RandStream.setDefaultStream(s);s = RandStream('mcg16807', 'Seed',0);RandStream.setDefaultStream(s);N = 10^5; %码元数Eb_N0 = -4:20; %Eb/N0比特信噪比s_data = zeros(1,N);ErrorCount=zeros(1,length(Eb_N0)); %预先分配内存,用于记录错误的码元数for j = 1:length(Eb_N0)p = (2*(rand(1,N)>0.5)-1) + 1i*(2*(rand(1,N)>0.5)-1);s = (1/sqrt(2))*p; %归一化n = 10^(-Eb_N0(j)/40)*1/sqrt(2)*(randn(1,N) + 1i*randn(1,N)); %加性高斯白噪声r = s + n;%解调r_re = real(r); %实部r_im = imag(r); %虚部s_data(r_re < 0 & r_im < 0) = -1 + -1*1i;s_data(r_re >= 0 & r_im > 0) = 1 + 1*1i;s_data(r_re < 0 & r_im >= 0) = -1 + 1*1i;s_data(r_re >= 0 & r_im < 0) = 1 - 1*1i;ErrorCount(j) = size(find(p- s_data),2); %错误的码元数endsim_QPSK = ErrorCount/N;theory_QPSK = erfc(sqrt(0.5*(10.^(Eb_N0/20)))) -(1/4)*(erfc(sqrt(0.5*(10.^(Eb_N0/20))))).^2;close allfiguresemilogy(Eb_N0,theory_QPSK,'b.-');hold onsemilogy(Eb_N0,sim_QPSK,'mx-');axis([-4 20 10^-3 1])grid on。

在matlab上的的QPSK调制与解调仿真

在matlab上的的QPSK调制与解调仿真

QPSK的调制与解调电路的MATLAB实现摘要本课程设计主要讨论了QPSK的调制解调原理,分析了它们的调制解调实现过程的程序设计。

在课程设计中,系统开发平台为Windows 2000,程序运行平台为MATLAB集成环境下的Simulink仿真平台。

用Simulink构建QPSK调制与解调电路仿真模型,得到调制、解调信号,绘制调制前后频谱图,分析QPSK在各种噪声信道中的性能。

程序运行初步实现了QPSK的调制解调,其所得结果基本与理论结果一致。

关键词Simulink;调制解调;QPSK;目录1.前言 (1)1.1QPSK系统的应用背景简介 (1)1.2 QPSK实验仿真的意义 (1)1.3 实验平台和实验内容 (2)1.3.1实验平台 (2)1.3.2实验内容 (2)2系统实现框图和分析 (3)2.1、QPSK调制部分 (3)2.2、QPSK解调部分 (4)3实验结果及分析 (6)3.1、理想信道下的仿真 (6)3.2、高斯信道下的仿真 (7)3.3、先通过瑞利衰落信道再通过高斯信道的仿真 (8)4致谢 (9)参考文献 (10)附录 (11)1.前言1.1QPSK系统的应用背景简介QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。

在19世纪80年代初期,人们选用恒定包络数字调制。

这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。

19世纪80年代中期以后,四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。

1.2 QPSK实验仿真的意义通过完成设计内容,复习QPSK调制解调的基本原理,同时也要复习通信系统的主要组成部分,了解调制解调方式中最基础的方法。

MATLAB实现QPSK信号的调制解调以及计算误码率BER

MATLAB实现QPSK信号的调制解调以及计算误码率BER

MATLAB实现QPSK信号的调制解调以及计算误码率BER QPSK(Quadrature Phase Shift Keying)是一种基于调制的数字通信方法,它能够提高频谱利用率并减小误码率。

在QPSK调制中,每个符号由两个正交的载波信号之一进行相位调制,共有四种可能的相位状态。

本文将介绍如何使用MATLAB实现QPSK信号的调制、解调,并计算误码率BER(Bit Error Rate)。

首先,我们将使用MATLAB生成一个随机的二进制数列作为待传输的数字数据。

假设数据位数为N。

```matlabN=1000;%数据位数data = randi([0, 1], 1, N); % 生成随机二进制数据```接下来,我们将二进制数据转换为QPSK调制所需的两个IQ通道数据。

其中,I通道代表实部,Q通道代表虚部。

我们将0和1分别映射为QPSK调制的四个相位状态(例如:00映射为相位0°,01映射为相位90°,10映射为相位180°,11映射为相位270°)。

```matlabqpsk_data = reshape(data, 2, N/2); % 转换为2*N/2矩阵qpsk_data = 2*qpsk_data - 1; % 转换为-1和1之间的数值I = qpsk_data(1, :);Q = qpsk_data(2, :);```现在,我们得到了I和Q两个IQ通道的数据。

接下来,我们将对这两个通道的数据进行调制。

在QPSK调制中,我们使用两个不同相位的正弦信号。

```matlabfs = 1000; % 采样率fc = 10; % 载波频率t = 0:1/fs:N/fc-1/fs; % 时间序列I_modulated = real(sqrt(2/T).*I.*cos(2*pi*t*fc)); % I通道调制Q_modulated = real(sqrt(2/T).*Q.*sin(2*pi*t*fc)); % Q通道调制QPSK_signal = I_modulated + Q_modulated; % QPSK信号```现在,我们得到了QPSK信号。

基于Matlab Builder JA的QPSK调制解调在线仿真

基于Matlab Builder JA的QPSK调制解调在线仿真
受到影响 。
理区域、 遮挡 区域 以及深度不连续区域, 能够获得相对其他方
法更高 的匹配精度, 因而能生产高精度的稠密视差图。 另外 图 割方法在优化过程 中收敛速 度也相对 更快 。图割算法 的计算
量是非常大 的, 应用 中必须提高其时 问效率 。 参考 文献 :
【J S h rti 1 c asen D.S ei iR. T x n my a d E au t n o z l k A a o o n v lai f s o
在工程计算和教育科研领域有着广泛的应用。其 中基于 We b 的应用也越来越受 到重视 。 是, tb2 0b之 后的版本却 但 Ma a 0 6 l 不再支持 Mal bS re t bWe evr功能 。官方推荐 使用 Ma a a tb l
B i eNEJ 来取 代 We evr ul r / d A bSre 的功 能 。
21 0 2年第 5期
( 总第 1 1期 ) 2
信 息 通 信
I NFORM AT 0N & COM MUNI ATI 1 C ONS
2 2 01
( u . N 1 1 Sm o 2 )
基 于 Ma a ule Q S t bB i r A 的 P K调制解调在线仿真 l d J
MC , R 执行 Mal t b程序 , a 得到所需 的结果并返回。图 1 显示
了基 于 Jv a a的 Mal l bWe 用 的框 架 。 a b应
Ma a uleJ t bB i rA用来将 M 函数文件创建成一个 Jv 组 l d aa 件, 它支持 Mal 的所有功能。 Ib a 将生成的Jv 组件作为 Srlt aa eve 或其他 Jv 程序的外部添加库, aa 通过访问这些库 中类 的方法

基于matlab的qpsk通信系统设计与仿真

基于matlab的qpsk通信系统设计与仿真

211基于Matlab 的QPSK 通信系统设计与仿真郭文博(佳木斯大学信息电子技术学院,黑龙江佳木斯154007)摘要:随着大数据时代的到来,用户需要更高速率、更大容量以及更多业务的通信系统,而有限的频谱资源成为了通信系统发展的瓶颈。

QPSK 调制与解调作为一种多进制调制方式,极大地提升频谱资源的利用率。

基于此,文章对QPSK 的数字通信系统进行研究。

通过对QPSK 调制与解调的仿真参数的设计,对实验仿真结果进行了分析。

通过对比解调前后的波形,验证了所仿真的QPSK 通信系统的正确性。

关键词:QPSK ;调制;解调;数字通信系统中图分类号:TN911文献标识码:A 文章编号:1673-1131(2019)11-0211-02随着4G 移动通信技术的普及,信息时代已进化到大数据时代。

通过PSK 调制解调技术,4G 移动通信技术为高速率通信提供了保障。

由于用户对数字通信技术的依赖性越来越强,这就要求数字通信技术必须更稳定高效。

QPSK 作为数字通信系统中一种常用的多进制调制方式,能极大地提升频谱资源的利用效率,因此,对其进行研究具有重要意义和远大的商业价值。

1QPSK 的理论研究QPSK 调制解调技术又称之为正交相移键控技术,属于一种相位调制技术,是由PSK 技术改进而来,相对于传统的调整解调技术具有诸多优势,在有限的带宽内传输更多的信息,且传输过程中干扰对信号影响甚小。

作为一种线性窄带数字信号调制技术,QPSK 相对于PSK 技术的通信速率提升两倍,且可以有效地避免频率干扰,该技术起初在远距离卫星通信中作为调制技术。

随着通信设备的不断更新,设备性能大幅度提升,且稳定性不断改善,因此,QPSK 逐渐成为移动通信技术中主流调制解调技术之一。

2QPSK 调制与解调的仿真设计在对基于QPSK 调制与解调的整个数字通信系统的仿真平台搭建之前,首先对其各个主要部分的仿真部分进行设计,下面以信号输入至信号输出的顺序对其进行设计。

基于MATLAB的QPSK通信系统仿真设计重要

基于MATLAB的QPSK通信系统仿真设计重要

基于M A T L A B的Q P S K通信系统仿真设计重要Prepared on 24 November 2020摘要随着移动通信技术的发展,以前在数字通信系统中采用FSK、ASK、PSK 等调制方式,逐渐被许多优秀的调制技术所替代。

本文主要介绍了QPSK调制与解调的实现原理框图,用MATLAB软件中的SIMULINK仿真功能对QPSK调制与解调这一过程如何建立仿真模型,通过对仿真模型的运行,得到信号在QPSK 调制与解调过程中的信号时域变化图。

通过该软件实现方式,可以大大提高设计的灵活性,节约设计时间,提高设计效率,从而缩小硬件电路设计的工作量,缩短开发周期。

关键词 QPSK,数字通信,调制,解调,SIMULINKAbstractAs mobile communications technology, and previously in the adoption of digital cellular system, ASK, FSK PSK modulation, etc. Gradually been many excellent mod ulation technology substitution, where four phase-shift keying QPSK technology is a wireless communications technology in a binary modulation method. This article prim arily describes QPSK modulation and demodulation of the implementation of the prin ciple of block diagrams, focuses on the MATLAB SIMULINK software emulation in on QPSK modulation and demodulation the process how to build a simulation model, through the operation of simulation model, I get signal in QPSK modulation and dem odulation adjustment process domain change figure. The software implementation, ca n dramatically improve the design flexibility, saving design time, increase efficiency, design to reduce the workload of hardware circuit design, and shorten the developmen t cycle.Keywords QPSK, Digital Communication,modulation,demodulation,SIMULINK目录第1章绪论选题的目的和意义随着经济危化的不断发展,人们对通信的要求也越来越高。

QPSK调制与解调(Matlab仿真)

QPSK调制与解调(Matlab仿真)

QPSK调制与解调(Matlab仿真)1. 一般在仿真的时候,大家都喜欢直接做等效基带仿真(类似于星座点的仿真)。

但实际要传,还是要传频带的波形信号。

2. 为了模拟真实的环境,先把基带信号经过一个自定义的信道,然后再做脉冲成型,上变频,加一点噪声AWGN进去。

3. 为了模拟同步,应该用专用的同步算法。

但是这里的重点不在同步。

所以用了很简单粗暴的办法。

假装直接同步上了。

4. 为了造出不同步的结果,可以这样写 x_未同步 = [x(300:end); x; x]; 相当于循环发送,循环接收。

这是仿真。

Main%%% 单载波QPSK 接收端% 2017年5月17日18:02:56clear;close all;clcrand_seed = 0;rand('seed',rand_seed);randn('seed',rand_seed);%%% Set up parameters and signals.M = 4; % Alphabet size for modulationbaud_rate = 100; % Baud ratef_carrier1 = 75; % Carrier frequencyNsym = 10000; % Number of symbolsmsg = randi([0 M-1],Nsym,1); % Random messagehMod = comm.RectangularQAMModulator(M);modmsg = step(hMod,msg); % Modulate using QAM. % 映射后的基带信号trainlen = 1000; % Length of training sequencerolloff = .3; % 滚降因子span = 20 ; % 截断长度sps = 10; % Samples per symbolrrcFilter=rcosdesign(rolloff,span,sps,'sqrt'); %根升余弦滚降滤波器,‘sqrt’均方根升余弦;‘normal’升余弦fs = baud_rate*sps; % 时间采样率,时间采样间隔为1/fs 秒Tsymbol=1/baud_rate;% 2. 脉冲成型% txSig = upfirdn(modmsg, rrcFilter, sps); % 发送端的基带复波形信号% chan = [1; .001];chan = [.986; .845; .237; .123+.31i]; % Channel coefficients% chan = [1 0.45 0.3+0.2i]; % Channel coefficientsfiltmsg = filter(chan,1,modmsg); % Introduce channel distortion.(已经经过信道的畸变的基带复信号,星座点)txSig = upfirdn(filtmsg, rrcFilter, sps); % 发送端的基带复波形信号txSig = awgn(txSig,20,'measured'); % Add AWGNt = (0:1/fs:((length(txSig)-1)/fs)).';T = t(end)+1/fs;df = 1/T;freq = -fs/2:df:fs/2-df;cos1 = cos(2*pi*f_carrier1 * t);sin1 = sin(2*pi*f_carrier1 * t);x_upconv = real(txSig).* cos1 + imag(txSig) .* sin1;%% === 接收端x_training_wave = x_upconv;x_training_msg = msg;rxSig = [x_upconv(300:end) ; x_upconv];% 1. 同步x_resampled = resample(rxSig,1,1);x_sync = sync_two_signals( x_resampled,x_training_wave,0);figure(2);plot(freq,20*log10(abs(fftshift(fft(x_sync))/max(abs(fftshift(fft(x_sync)))))));ylim([-100,10])xlim([0,freq(end)])grid on;xlabel('频率(Hz)');title('接收信号');% 2. 下变频+ 匹配滤波xi_dnconv = x_sync .* cos1;xq_dnconv = x_sync .* sin1;x_filtered = xi_dnconv + 1j * xq_dnconv;rxFilt = upfirdn(x_filtered, rrcFilter, 1, sps);rxFilt = rxFilt(span+1:end-span); % 这是接收端匹配滤波后的信号% 3. 均衡% eq1 = lineareq(6, lms(0.01)); % LMSeq1 = lineareq(30, rls(0.99,0.01)); % Create an equalizer object. % 40 taps,RLS算法,步长0.99,自相关矩阵逆矩阵的初值InvCorrInit对角线上的元素eq1.SigConst = step(hMod,(0:M-1)')'; % Set signal constellation. % 标准星座图[symbolest,~] = equalize(eq1,rxFilt,x_training_msg(1:trainlen)); % Equalize. % 均衡器obj,需要均衡的信号,训练序列symbolest = symbolest ./ mean(abs(symbolest)) .* mean(abs(eq1.SigConst));% Plot signals.h = scatterplot(rxFilt,1,trainlen,'bx'); hold on;scatterplot(symbolest,1,trainlen,'r.',h);scatterplot(eq1.SigConst,1,0,'k*',h);legend('Filtered signal','Equalized signal',...'Ideal signal constellation');hold off;% Compute error rates with equalization.hDemod = comm.RectangularQAMDemodulator(M);demodmsg = step(hDemod,symbolest); % Demodulate detected signal from equalizer.% Create ErrorRate Calculator System objectserVec = step(comm.ErrorRate,msg(trainlen+1:end),demodmsg(trainlen+1:end));srate = serVec(1)snum = serVec(2)% Convert integers to bitshIntToBit = comm.IntegerToBit(log2(M));Tx_bit = step(hIntToBit, msg(trainlen+1:end));Rx_bit = step(hIntToBit, demodmsg(trainlen+1:end));% Calculate BERberVec = step(comm.ErrorRate,Rx_bit,Tx_bit);brate = berVec(1)bnum = berVec(2)同步的代码function x_sync = sync_two_signals( x_resampled,x_training_wave,idx )% sync_two_signals( x_resampled,x_training_wave,idx )% x_resampled:收到的信号% x_training_wave:用发送的信号% idx:要找同步上的第几段。

基于Matlab的QPSK调制与解调系统仿真

基于Matlab的QPSK调制与解调系统仿真

一、多进制调制带通二进制键控系统中,每个码元只能传输1b信息,其频带利用率不高。

为了提高频带利用率,最有效的办法是使一个码元传输多个比特的信息。

这就是多进制键控体制。

多进制数字调制是利用多进制数字基带信号去调制载波的振幅,频率或相位。

因此,相应地有多进制数字振幅调制(MASK),多进制数字频率调制(MPSK)以及多进制数字相位调制(MPSK)等。

多进制数字调制是利用多进制数字基带信号去调制载波的振幅、频率或相位。

由于多进制数字调制信号的被调参数在一个码元宽度内有多个可能的取值,因此与二进制数字调制相比,具有以下两个特点:(1)在相同的信道码元传输速率下,L进制系统的信息传输速率是二进制系统的log L倍;2(2)在相同的系统传信率下,多进制信道的符号速率可以低于二进制的符号速率,因而所需信道带宽减小。

因此,多进制调制方式获得了广泛的应用,成为提高通信效率的主要手段。

二、QPSK的原理QPSK(4PSK,正交相移键控)又叫四相绝对相移调制,是最常用的MPSK,分为π/2系统和π/4系统两种。

它是利用载波的四种不同相位来表征数字信息。

由于每一种载波相位代表两个比特信息,故每个四进制码元又被称为双比特码元。

QPSK系统在用正交调制部分需要进行串/并变换,其中串/并变换电路将QPSK调制的两位编码按比特分开,走上下两路,分成的两路序列速率减半,电平发生器分别产生双极性二电平信号I(t)和Q(t),然后各自去调制相互正交的正弦波,再进行矢量合成,即得到QPSK信号。

图1 QPSK调制电路在解调部分可以用两个正交的载波信号实现相干解调。

正交路和同相路分别设置两个相关器,得到I(t)和Q(t),经电平判决和并/串变换即可恢复原始信息。

图2 QPSK解调电路三、详细设计步骤1 根据QPSK的调制及解调原理及原理框图,MATLAB程序来仿真这个系统应遵循以下几个步骤:调制部分:(1)串/并变换(2)极性转换(3)电平产生(4)两分路分别与载波相乘(5)合并两路信号信道部分:加入高斯白噪声解调部分:(1)接收到的信号分别乘以正弦信号及余弦信号(2)两路信号分别进行抽样判决(3)并/串变换2 用MATLAB 程序来实现QPSK 调制与解调系统仿真四、设计结果及分析0100200300400500600700800-2-1.5-1-0.50.511.52产生的二进制波形图1 产生的随机二进制序列050100150200250300350400-2-112二进制信息050100150200250300350400-2-112余弦分路信号图2 基数位的二进制序列及调制后的波形050100150200250300350400-2-112二进制信息050100150200250300350400-2-112正弦分路信号图3偶数位的二进制序列及调制后的波形050100150200250300350400-1-0.50.51加性高斯白噪声时域波形050100150200250300350400051015加性高斯白噪声频谱图4 加性高斯白噪声的时域波形及频谱050100150200250300350400-55接收端信号的时域图050100150200250300350400-202接收端正弦分路信号050100150200250300350400-22接收端余弦分路信号图5接收端信号的时域图及正余弦两路信号的波形0510********35404550-29.5-29-28.5-28-27.5-27-26.5-26-25.5-25-24.5Frequency (Hz)P o w e r /f r e q u e n c y (d B /H z )加性高斯白噪声功率谱密度图6 加性高斯白噪声的功率谱密度0100200300400500600700800-2-1.5-1-0.50.511.52解调出的波形图7 接收端最终解调后的二进制序列五、总结在现代通信中,提高频谱利用率一直是人们关注的焦点之一。

QPSK调制与解调系统的MATLAB实现

QPSK调制与解调系统的MATLAB实现

QPSK调制与解调系统的MATLAB实现和性能分析摘要:QPSK是英文QuadraturePhaseShiftKeying的缩略语简称,意为正交相移键控,是一种数字调制方式。

四相相移键控信号简称“QPSK”。

在现代通信系统中,调制与解调是必不可少的重要手段。

所谓调制,就是把信号转换成适合在信道中传输的形式的一种过程。

解调则是调制的相反过程,而从已调制信号中恢复出原信号。

本课程设计主要介绍通过进行QPSK调制解调的基带仿真,对实现中影响该系统性能的几个重要问题进行了研究。

针对QPSK的特点,调制前后发生的变化,加上噪声后波形出现的各种变化,通过星座图、眼图、波形图等来观察。

程序设计与仿真均采用MATLAB集成环境下的Simulink仿真平台,最后仿真详单与理论分析一致。

1 引言本课程设计主要是学会运用MATLAB中的Simulink来实现数字基带信号的模拟传输。

在知道其传输原理的情况下,将仿真电路到Simulink之中。

并且对正交振幅调制、解调过程的频谱和波形的分析,同时在无噪声和有噪声的进行分析,加入高斯白噪声,瑞利噪声,莱斯噪声分析调制解调后的频谱、波形,观察其误码率。

1.1课程设计的目的通过本课程的学习我们不仅能加深理解和巩固理论课上所学的有关QPSK调制与解调的基本概念、基本理论和基本方法,而且能锻炼我们分析问题和解决问题的能力;同时对我们独立工作的习惯和科学素质进行培养,为今后参加科学工作打下良好的基础。

1.2课程设计的内容利用MATLAB集成环境下的Simulink仿真平台,设计一个QPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上各种噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。

1.3课程设计的要求1)熟悉MATLAB环境下的Simulink仿真平台,熟悉QPSK系统的调制解调原理,构建QPSK调制解调电路图.2)用示波器观察调制前后的信号波形,用频谱分析模块观察调制前后信号的频谱的变化。

基于 MATLAB的 QPSK 调制解调仿真

基于 MATLAB的 QPSK 调制解调仿真

基于MATLAB的QPSK 调制解调仿真( 1 ) 熟悉2QPSK 调制解调原理。

(2)掌握编写2QPSK 调制解调程序的要点。

(3)掌握使用MATLAB 调制解调仿真的要点。

( 1 ) 根据2QPSK 调制解调原理,设计源程序代码。

( 2 ) 通过MATLAB软件仿真给定信号的调制波形。

(3)对比给定信号的理论调制波形和仿真解调波形。

QPSK即四进制移向键控(quaternary phase shift keying),它利用载波的4种不同相位来表示数字信息,由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。

两个二进制码元中的前一个码元用a 表示,后一个码元用b 表示。

由QPSK 信号的调制原理可知,对它的解调可以采用与2PSK 信号类似的解调方法进行解调。

解调原理图如图2-18-2 所示,同相支路和正交支路分别采用相干解调方式解调,得到I ( t )和Q(t),经过抽样判决和并/串交换器,将上下支路得到的并行数据恢复成串行数据。

(1 )利用QPSK 正交调制器,用调相法产生QPSK信号。

( 2 ) 画出QPSK 信号的波形。

( 3 ) 利用相干解调法,画出QPSK解调后的信号。

( 1 ) 首先,用调相法产生QPSK 信号。

( 2 ) 使用MATLAB 画出QPSK 信号的波形。

(3)根据相干解调法,画出解调后的波形,与原始信号波形进行比较。

N=20;%比特数T=1;%比特周期fc=2;%载波频率Fs=100;%抽样频率bitstream=randi([0,1],1,N);%随机产生的比特数0、1bitstream=2*bitstream-1;%单极性变为双极性(0到-1;1到1)I=[];Q=[];%奇数进I路,偶数进Q路for i=1:Nif mod(i,2)~=0I=[I,bitstream(i)];elseQ=[Q,bitstream(i)];endend%采用绘图比较I、Q比特流bit_data=[];for i=1:Nbit_data=[bit_data,bitstream(i)*ones(1,T*Fs)];%在一个比特周期里面有T*Fs个1和采样点一模一样endI_data=[];Q_data=[];for i=1:N/2%I路和Q路是原来比特周期的两倍,2Tb=Ts(码元周期),因此采样点个数为T*Fs*2I_data=[I_data,I(i)*ones(1,T*Fs*2)];Q_data=[Q_data,Q(i)*ones(1,T*Fs*2)];end%绘图figure();%时间轴t=0:1/Fs:N*T-1/Fs;subplot(3,1,1)plot(t,bit_data);legend('Bitstream')%比特信息subplot(3,1,2)plot(t,I_data);legend('I Bitstream')%I路信息subplot(3,1,3)plot(t,Q_data);legend('Q Bitstream')%Q路信息%载波信号bit_t=0:1/Fs:2*T-1/Fs;%载波周期为2倍比特周期,定义时间轴%定义I路和Q路的载波I_carrier=[];Q_carrier=[];for i=1:N/2I_carrier=[I_carrier,I(i)*cos(2*pi*fc*bit_t)];%I路载波信号Q_carrier=[Q_carrier,Q(i)*cos(2*pi*fc*bit_t+pi/2)];%Q路载波信号end%传输信号QPSK_signal=I_carrier+Q_carrier;%绘图figure();%产生一个新图subplot(3,1,1)plot(t,I_carrier);legend('I signal')%I路信号subplot(3,1,2)plot(t,Q_carrier);legend('Q signal')%Q路信号subplot(3,1,3)plot(t,QPSK_signal);legend('QPSK signal')%I路、Q路和的信号snr=1;%信躁比%接收信号QPSK_receive=awgn(QPSK_signal,snr);%awgn()添加噪声%解调for i=1:N/2I_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2 *pi*fc*bit_t);if sum(I_output)>0 %积分器求和,大于0为1,否则为-1I_recover(i)=1;elseI_recover(i)=-1;endQ_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2 *pi*fc*bit_t+ pi/2);if sum(Q_output)>0Q_recover(i)=1;elseQ_recover(i)=-1;endend%并/串变换bit_recover=[];for i=1:Nif mod(i,2)~=0bit_recover=[bit_recover,I_recover((i-1)/2+1)];%奇数取I路信息elsebit_recover=[bit_recover,Q_recover(i/2)];%偶数取Q路信息endend%适用绘图比较I、Q比特流recover_data=[];for i=1:Nrecover_data=[recover_data,bit_recover(i)*ones(1,T*Fs)];endI_recover_data=[];Q_recover_data=[];for i=1:N/2I_recover_data=[I_recover_data,I_recover(i)*ones(1,T*Fs*2)];Q_recover_data=[Q_recover_data,Q_recover(i)*ones(1,T*Fs*2)];end%绘图figure();t=0:1/Fs:N*T-1/Fs;subplot(3,1,1)plot(t,recover_data);legend('Bitstream')%恢复的比特信息subplot(3,1,2)plot(t,I_recover_data);legend('I Bitstream')%恢复的I路信息subplot(3,1,3)plot(t,Q_recover_data);legend('Q Bitstream')%恢复的Q路信息Q路对应的比特数和波形图如下所示路和信号(QPSK)对应波Q路信息波形图如图所示在本次实验中,我根据QPSK 调制解调仿真原理,写出了源程序代码,了解到了很多东西,其中通过Matlab软件根据相干解调法,画出解调后的波形,与原始信号波形进行仿真比较。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计结果及分析
图7 加性高斯白噪声的功率谱密度
设计结果及分析
图8 接收端最终解调后的二进制序列
总结
在现代通信中,提高频谱利用率一直是人们 关注的焦点之一。近年来,随着通信业务需求的 增长,寻找频谱利用率高的数字调制方式已成为 数字通信系统设计,研究的主要目标之一。利用 Matlab仿真通信系统,具有广泛的适应性和极高 的灵活性。在硬件实验中改变系统参数也许意味 着重做硬件,而在软件中只需对特定参数进行相 应设置嗍,节省了时间和费用。实践证明Matlab 可以进行多进制数字通信系统的有效仿真,在理 论教学和实验教学中具有良好的应用价值。
QPSK信号空间特性见下表,其中采用格雷 码进行编码
相干QPSK系统的信号空间图
QPSK的调制电路
QPSK的解调电路
相乘
coswt S(t)
低通 载波提 取
抽判
Π/2
-sinwt
定时 提取
A(t)
并串
相乘
低通
抽判
详细设计步骤
1、根据QPSK的调制及解调原理及原理框图,MATLAB程序来 仿真这个系统应遵循以下几个步骤: ◆调制部分:(1)串/并变换 (2)极性转换 (3)电平产生 (4)两分路分别与载波相乘 (5)合并两路信号 ◆信道部分:加入高斯白噪声 ◆解调部分: (1)接收到的信号分别乘以正弦信号及余弦信号 (2)两路信号分别进行抽样判决 (3)并/串变换 2、用MATLAB程序来实现QPSK调制与解调系统仿真。
设计结果及分析
图1 产生的随机二进制序列
设计结果及分析
图2 奇数位的二进制序列及调制后的波形
设计结果及分析
图3 偶数位的二进制序列及调制后的波形
设计结果及分析
图4 QPSK调制图
设计结果及分析
图5 加性高斯白噪声的时域波形及频谱
设计结果及分析
图6 接收端信号的时域图及正余弦两路 信号的波形
基于Matlab的QPSK调制与解调 系统仿真
QPSK调制与解调系ห้องสมุดไป่ตู้仿真
本文主要包括以下四部分: ★ 多进制调制的简介 ★ QPSK的原理
★ 详细设计步骤
★ 设计结果及分析
多进制调制
◆带通二进制键控系统中,每个码元只能传输1b
信息,其频带利用率不高。为了提高频带利用 率,最有效的办法是使一个码元传输多个比特 的信息。这就是多进制键控体制。 ◆多进制数字调制是利用多进制数字基带信号去 调制载波的振幅,频率或相位。因此,相应地 有多进制数字振幅调制(MASK),多进制数字频 率调制(MFSK)以及多进制数字相位调制(MPSK) 等。因此,多进制调制方式获得了广泛的应用, 成为提高通信效率的主要手段。
QPSK的原理
◆QPSK(4PSK,正交相移键控)又叫四相绝对
相移调制,是最常用的MPSK,分为/2 系统 和/4 系统两种。它是利用信号的四种不同 相位来表征数字信息。由于每一种码元含有 两个比特信息,故每个四进制码元又被称为 双比特码元。 ◆载波相位取/4 、3/4、5/4、7/4
相关文档
最新文档