莱斯信道中QPSK信号Matlab仿真
- 格式:pdf
- 大小:913.37 KB
- 文档页数:7
QPSK通信系统性能分析与MATLAB仿真讲解QPSK(Quadrature Phase Shift Keying)是一种调制方式,常用于数字通信中的短波通信和卫星通信等场景。
在QPSK通信系统中,将每个二进制位编码为相位不同的信号,通常使用正交载波来实现。
为了分析和评估QPSK通信系统的性能,可以使用MATLAB进行仿真。
下面将具体讲解如何进行QPSK通信系统性能分析和MATLAB仿真。
首先,我们需要定义一些基本参数。
QPSK调制是基于二进制编码的,因此将要发送的数据转换为二进制比特流。
可以使用MATLAB中的函数来生成二进制比特流,如`randi([0,1],1,N)`,其中N是比特流的长度。
在这里,可以自行选择比特流的长度。
接下来,需要将二进制比特流分组为2比特一组,以便编码为相位信息。
可以使用MATLAB中的函数来进行分组,如`reshape(bit_stream,2,length(bit_stream)/2)'`,其中bit_stream是二进制比特流。
这里的重点是要确保二进制比特流的长度为2的倍数。
然后,将每组2比特编码为相位信息。
QPSK调制使用4个相位点来表示4种可能的组合,通常用0、π/2、π和3π/2来表示这些相位点。
可以使用MATLAB中的函数生成这些相位信息,如`phase_data =[0,pi/2,pi,3*pi/2]`。
接下来,通过幅度和相位信息生成QPSK信号。
可以使用MATLAB中的函数来生成QPSK信号,如`qpsk_signal = cos(2*pi*f*t+phase)`,其中f是载波频率,t是时间,phase是相位信息。
然后,添加噪声到QPSK信号中以模拟实际通信环境。
可以使用MATLAB中的函数来添加噪声,如`noisy_signal =awgn(qpsk_signal,SNR)`,其中SNR是信噪比。
最后,解调接收到的信号以恢复原始数据。
可以使用MATLAB中的函数来解调信号,如`received_bits = reshape(received_signal,[],2) > 0`。
淮海工学院课程设计报告书课程名称:通信系统的计算机仿真设计题目:QPSK通信系统性能分析与MATLAB仿真学院:电子工程学院学期:2013-2014-2专业班级:姓名:学号:评语:成绩:签名:日期:QPSK通信系统性能分析与MATLAB仿真1 绪论1.1 研究背景与研究意义数字信号传输系统分为基带传输系统和频带传输系统,频带传输系统也叫数字调制系统,该系统对基带信号进行调制,使其频谱搬移到适合在信道(一般为带通信道)上传输的频带上。
数字调制和模拟调制一样都是正弦波调制,即被调制信号都为高频正弦波。
数字调制信号又称为键控信号,数字调制过程中处理的是数字信号,而载波有振幅、频率和相位3个变量,且二进制的信号只有高低电平两个逻辑量即1和0,所以调制的过程可用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制,最基本的方法有3种:正交幅度调制(QAM) 、频移键控( FSK) 、相移键控( PSK) 。
根据所处理的基带信号的进制不同分为二进制和多进制调制(M进制) 。
本实验采用QPSK。
QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。
在19世纪80年代初期人们选用恒定包络数字调制。
这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求不足之处是其频谱利用率低于线性调制技术。
19世纪80年代中期以后四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。
1.2 课程设计的目的和任务目的在于使学生在课程设计过程中能够理论联系实际,在实践中充分利用所学理论知识分析和研究设计过程中出现的各类技术问题,巩固和扩大所学知识面,为以后走向工作岗位进行设计打下一定的基础。
课程设计的任务是:(1)掌握一般通信系统设计的过程,步骤,要求,工作内容及设计方法,掌握用计算机仿真通信系统的方法。
1 移动无线信道的定义及分类各类信号从发射端发送出去以后,在到达接收端之前经历的所有路径统称为信道。
如果其中传输的是无线电信号,电磁波所经历的路径称之为无线信道。
与其他通信信道相比,无线信道是最为复杂的一种。
无线传播环境是影响无线通信系统的基本因素。
发射机与接受机之间的无线传播路径,因从经历简单的视距传播,到遭遇各种复杂的地物(如建筑物、山脉和树林等)所引起的反射、绕射和散射传播等而显得非常复杂。
另外,移动台相对于发射台移动的方向和速度,甚至收发双方附近的移动物体也对接受信号有很大的影响。
因此,这使得无线信道具有极度的随机性。
移动通信信号在空间传播中所经历的衰落大体可以分为2类, 即大尺度衰落和小尺度衰落,如图1所示。
大尺度衰落是因为发射机与接收机之间的距离和两者之间障碍物(如山丘、森林、建筑物等)的遮蔽影响而造成的信号强度的衰减,它反映了移动信号在较大区域中的平均能量的减少或称为路径损失。
而小尺度衰落是指当移动台在一个较小的范围运动时,引起接收信号的幅度、相位和到达角等的快速变化。
图1 移动无线信道的分类信号在传播的过程中,受各种环境的影响会产生反射、衍射和散射,这样就使得到达接收机的信号是许多路径信号的叠加,因而这些多径信号的叠加在没有视距传播情况下的包络服从瑞利分布。
当多径信号中包含一条视距传播路径时,多径信号就服从莱斯分布。
根据信号多径附加时延的大小,小尺度衰落又可以分为平坦衰落和频率选择性衰落。
另外,由于移动台的移动性而导致接收到的信号产生多普勒频移(频率色散),根据多普勒扩展的大小,信道又可以分为快衰落信道和慢衰落信道。
2 瑞利分布和莱斯分布的特性在实际情况中对数字通信系统来说,调制符号的周期比由多径传播引起的时延扩展要大,因此在一个符号周期内的所有频率分量都会经历相同的衰减和相移。
信道对于所有频率分量来说是平坦的, 因而定义这类信道为平坦衰落信道。
理论分析和实测试验结果表明:平坦衰落的幅度在大多数情况下,符合瑞利分布(ray leighdistribution)或莱斯分布(ricedistribution)。
┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊目录第一章概述 (1)第二章QPSK通信系统原理与仿真 (1)2.1 QPSK系统框图介绍 (1)2.2QPSK信号的调制原理 (2)2.2.1QPSK信号产生方法 (2)2.2.2QPSK星座图 (2)2.3QPSK解调原理及误码率分析 (3)2.3.1QPSK解调方法 (3)2.3.2QPSK系统误码率 (3)2.4QPSK信号在AWGN信道下仿真 (4)第三章BPSK通信系统原理与仿真 (4)3.1BPSK信号的调制原理 (4)3.2BPSK解调原理及误码率分析 (4)第四章QPSK与BPSK性能比较 (5)4.1QPSK与BPSK在多信道下比较仿真 (5)4.1.1纵向比较分析 (5)4.1.2横向比较分析 (7)4.2仿真结果分析 (7)4.2.1误码率分析 (7)4.2.2频带利用率比较 (7)附录 (8)代码1 (8)代码2 (8)代码3 (10)代码4 (12)┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊第一章概述QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。
它以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接人、移动通信及有线电视系统之中。
BPSK是英文Binary Phase Shift Keying的缩略语简称,意为二相相移键控,是利用偏离相位的复数波浪组合来表现信息键控移相方式的一种。
它使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。
本文所研究的QPSK系统与二进制的BPSK系统相比,具有以下特点:1.在传码率相同的情况下,四进制数字调制系统的信息速率是二进制系统的2倍。
2.在相同信息速率条件下,四进制数字调制系统的传码率是二进制系统的1/4倍,这一特点使得四进制码元宽度是二进制码元宽度的2倍,码元宽度的加大,可增加每个码元的能量,也可减小码间串扰的影响。
qpsk、bpsk的蒙特卡洛仿真是一种用于测试和验证通信系统性能的重要工具。
通过模拟大量的随机输入数据,并对系统进行多次仿真运算,可以对系统的性能进行全面评估,包括误码率、信噪比要求等。
在matlab中,我们可以通过编写相应的仿真代码来实现qpsk、bpsk 的蒙特卡洛仿真。
下面将分别介绍qpsk和bpsk的蒙特卡洛仿真matlab代码。
一、qpsk的蒙特卡洛仿真matlab代码1. 生成随机的qpsk调制信号我们需要生成一组随机的qpsk调制信号,可以使用randi函数生成随机整数序列,然后将其映射到qpsk符号点上。
2. 添加高斯白噪声在信号传输过程中,会受到各种干扰,其中最主要的干扰之一就是高斯白噪声。
我们可以使用randn函数生成高斯白噪声序列,然后与调制信号相加,模拟信号在传输过程中受到的噪声干扰。
3. 解调和判决接收端需要进行解调和判决操作,将接收到的信号重新映射到qpsk符号点上,并判断接收到的符号与发送的符号是否一致,从而判断是否发生误码。
4. 统计误码率通过多次仿真运算,记录错误判决的次数,从而可以计算出系统的误码率。
二、bpsk的蒙特卡洛仿真matlab代码1. 生成随机的bpsk调制信号与qpsk相似,我们需要先生成一组随机的bpsk调制信号,然后模拟信号传输过程中的噪声干扰。
2. 添加高斯白噪声同样使用randn函数生成高斯白噪声序列,与bpsk调制信号相加。
3. 解调和判决接收端对接收到的信号进行解调和判决,判断接收到的符号是否与发送的符号一致。
4. 统计误码率通过多次仿真运算,记录错误判决的次数,计算系统的误码率。
需要注意的是,在编写matlab代码时,要考虑到信号的长度、仿真次数、信噪比的范围等参数的选择,以及仿真结果的统计分析和可视化呈现。
qpsk、bpsk的蒙特卡洛仿真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仿真学院:电子工程学院学期:2013-2014-2专业班级:姓名:学号:评语:成绩:签名:日期:QPSK通信系统性能分析与MATLAB仿真1 绪论1.1 研究背景与研究意义数字信号传输系统分为基带传输系统和频带传输系统,频带传输系统也叫数字调制系统,该系统对基带信号进行调制,使其频谱搬移到适合在信道(一般为带通信道)上传输的频带上。
数字调制和模拟调制一样都是正弦波调制,即被调制信号都为高频正弦波。
数字调制信号又称为键控信号,数字调制过程中处理的是数字信号,而载波有振幅、频率和相位3个变量,且二进制的信号只有高低电平两个逻辑量即1和0,所以调制的过程可用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制,最基本的方法有3种:正交幅度调制(QAM) 、频移键控( FSK) 、相移键控( PSK) 。
根据所处理的基带信号的进制不同分为二进制和多进制调制(M进制) 。
本实验采用QPSK。
QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。
在19世纪80年代初期人们选用恒定包络数字调制。
这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求不足之处是其频谱利用率低于线性调制技术。
19世纪80年代中期以后四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。
1.2 课程设计的目的和任务目的在于使学生在课程设计过程中能够理论联系实际,在实践中充分利用所学理论知识分析和研究设计过程中出现的各类技术问题,巩固和扩大所学知识面,为以后走向工作岗位进行设计打下一定的基础。
课程设计的任务是:(1)掌握一般通信系统设计的过程,步骤,要求,工作内容及设计方法,掌握用计算机仿真通信系统的方法。
qpsk信号matlab仿真程序-回复如何使用MATLAB编写并仿真QPSK信号。
第一步:QPSK信号概述QPSK(Quadrature Phase-Shift Keying)是一种常用的数字调制技术,用来传输数字数据。
QPSK信号通过在正交载波上调制不同相位的信号,将两个比特的编码映射到四个不同的相位状态上。
这种编码方式能有效提高信号传输效率,使得传输速率加倍。
第二步:设置QPSK信号参数在MATLAB中,可以通过设置一些参数来定义QPSK信号的性质。
首先,需要定义符号速率(Symbol Rate),即每秒传输的符号数量。
此外,还需要定义载波频率和采样频率。
根据信号的要求,可以选择不同的参数。
例如,我们可以设置符号速率为1KHz,载波频率为10KHz,采样频率为100KHz,即每个符号对应100个样本点。
这些参数可以根据实际需求进行调整。
第三步:生成QPSK调制信号使用MATLAB的通信系统工具箱,可以方便地生成QPSK调制信号。
我们可以使用qammod函数来实现这个功能。
qammod函数的语法如下:y = qammod(x, M, phase_offset)其中,x是待调制的数据序列,M表示调制级别(对于QPSK来说,M=4),phase_offset表示相位偏移(一般为0)。
例如,假设我们有一组数据序列x,长度为N。
我们可以使用以下代码生成QPSK调制信号:symbol_rate = 1000; 符号速率为1KHzcarrier_freq = 10000; 载波频率为10KHzsample_freq = 100000; 采样频率为100KHzt = 0:1/sample_freq:(N-1)/symbol_rate; 生成时间序列x = randi([0, 1], 1, N); 随机生成长度为N的数据序列qpsk_signal = qammod(x, 4, 0); 生成QPSK调制信号在生成调制信号后,我们可以使用plot函数将信号绘制出来,以便进行可视化分析。
QPSK通过Rayleigh信道多径衰落的Matlab仿真参照《通信系统仿真原理与无线应用》351页例14-1在这个例子里,我们对有3条固定路径的AWGN多径信道中的QPSK系统进行BER性能仿真,并与在理想的AWGN信道(没有多径)中同样系统地BER性能进行比较……书上有比较详细的数学推导,不抄了。
这个例子似乎没有考虑多普勒频移。
待我继续学习下一个例子,这个也没太看懂。
下面是该例子的源程序,P0、P1、P2分别是LOS路径和两条延迟瑞利分量的相对功率级。
当p0=0且delay!=0时为瑞利频率选择性衰落,delay==0时为瑞利平坦衰落。
主程序scriptfile:% 两径瑞利衰落信道仿真% 设定默认参数NN=256; % 传输符号个数tb=0.5; % 一比特时间fs=10; % 每符号采样数ebn0db=[1:2:15]; % 设定Eb/N0% 建立QPSK信号x=random_binary(NN,fs)+i*random_binary(NN,fs); % x为QPSK信号% 输入功率和延迟p0=0; % 视距LOS分量p1=20; % 第一路径分量p2=1; % 第二路径分量delay=1; % 按照每符号采样数决定的延迟delay0=0;delay1=0;delay2=delay;% 设定复高斯(瑞利)衰减gain1=sqrt(p1)*abs(randn(1,NN)+i*randn(1,NN));gain2=sqrt(p2)*abs(randn(1,NN)+i*randn(1,NN));for k=1:NNfor kk=1:fsindex=(k-1)*fs+kk;ggain1(1,index)=gain1(1,k);ggain2(1,index)=gain2(1,k);endendy1=x;for k=1:delay2y2(1,k)=y1(1,k)*sqrt(p0);endfor k=(delay2+1):(NN*fs)y2(1,k)=y1(1,k)*sqrt(p0)+y1(1,k-delay1)*ggain1(1,k)+y1(1,k-delay2)*ggain2(1,k);end% 匹配滤波器b=-ones(1,fs);b=b/fs;a=1;y=filter(b,a,y2);% 仿真结束% Use the semianalytic BER estimator . The following sets up the semi% analytic estimator . Find the maximun magnitude of the cross correlation % and the corresponding lag .[cor lags]=vxcorr(x,y);cmax=max(max(abs(cor)));nmax=find(abs(cor)==cmax);timelag=lags(nmax);corrmag=cmax;theta=angle(cor(nmax));y=y*exp(-i*theta); % derotate% Noise BW calibrationhh=impz(b,a);ts=1/16;nbw=(fs/2)*sum(hh.^2);% Delay the input ,and do BER estimation on the last 128 bits . Use middle % sample .Make sure the index does not exceed number of input points .Eb % should be computed at the receiver input .index=(10*fs+8:fs:(NN-10)*fs+8);xx=x(index);yy=y(index-timelag+1);[n1 n2]=size(y2);ny2=n1*n2;eb=tb*sum(sum(abs(y2).^2))/ny2;eb=eb/2;[peideal,pesystem]=qpsk_berest(xx,yy,ebn0db,eb,tb,nbw);figuresemilogy(ebn0db,peideal,'b*-',ebn0db,pesystem,'r+-')xlabel('Eb/N0 (db)');ylabel('Probability of Error');grid onaxis([0 14 10^(-10) 1]);% End of script file.相关的一些调用程序(4个):[1] vxcorr.mfunction [c,lags]=vxcorr(a,b)% This function calculates the unscaled cross-correlation of 2 vectors of% the same length . The output length(c) is length(a)+length(b)-1. It is a% simplified function of xcorr function in matlabR12 using the definition: % c(m)=E[a(n+m)*conj(b(n))]=E[a(n)*conj(b(n-m))] a=a(:); % convert a to column vectorb=b(:); % convert b to column vectorM=length(a); % same as length(b)maxlag=M-1; % maximum value of laglags=[-maxlag:maxlag]';A=fft(a,2^nextpow2(2*M-1)); % fft of AB=fft(b,2^nextpow2(2*M-1)); % fft of Bc=ifft(A.*conj(B)); % corsscorrelation% Move negative lags before positive lags.c=[c(end-maxlag+1:end,1);c(1:maxlag+1,1)];% Return row vector if a,b are row vectors.[nr nc]=size(a);if(nr>nc)c=c.';lags=lags.';end% End of function file.[2] random_binary.mfunction [x,bits]=random_binary(nbits,nsamples)% This function generates a random binary waveform of length nbits% sampled at a rate of nsamples/bit.x=zeros(1,nbits*nsamples);bits=round(rand(1,nbits));for m=1:nbitsfor n=1:nsamplesindex=(m-1)*nsamples+n;x(1,index)=(-1)^bits(m);endend% End of function file.[3] qpsk_berest.m% File: psk_berest.mfunction[peideal,pesystem]=psk_berest(xx,yy,ebn0db,eb,tb,nbw) % ebn0db is an array of Eb/No values in db (specified at the receiver%input); tb is the bit duration and nbw is the noise BW% xx is the reference (ideal) input; yy is the filtered output;nx=length(xx);% For comparision purposes , set the noise BW of the ideal receiver% (integrate and dump) to be equal to rs/2.nbwideal=1/(2*tb); % noise bandwidthfor m=1:length(ebn0db)peideal(m)=0.0; pesystem(m)=0.0; %initialize% find n0 and the variance of the noise.ebn0(m)=10^(ebn0db(m)/10); % dB to linearn0=eb/ebn0(m); % noise powersigma=sqrt(n0*nbw*2); %variancesigma1=sqrt(n0*nbwideal*2);%% Multiply the input constellation/signal by a scale factor so that input% constellation and the constellations/signal at the input to receive % filter have the same ave power a=sqrt(2*eb/(2*tb)).b=sqrt(2*eb/tb)/sqrt(sum(abs(xx).^2)/nx);d1=b*abs(xx);d3=abs(yy);peideal(m)=sum(q(d1/sigma1));pesystem(m)=sum(q(d3/sigma));endpeideal=peideal/nx;pesystem=pesystem/nx; % End of function file.[4] q.m% File: q.mfunction out=q(x)out=0.5*erfc(x/sqrt(2)); % End of function file。
QPSK已调信号生成一、QPSK介绍QPSK是英文Quadrature Phase Shift Keying 的缩写,意为正交相移键控,是一种数字调制方式。
其有抗干扰性强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。
二、实验平台和实验内容1、实验平台本实验是MATLAB环境中生成基本QPSK已调信号,只需要MATLAB12.0。
2、实验内容1.基带信号为周期127bits伪随机序列,信息比特速率:20kbps,载波频率:20kHz(速率及频率参数现场可调整);2.在MATLAB环境中编写M代码搭建QPSK调制系统模型;3.观测基带时域波形、已调信号时域波形;4.观测基带发射星座图;5.观测已调信号的功率谱(优先)或频谱;三、实现框图及其原理分析1、原理分析及其结构QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。
载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。
相应的E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。
每一个可能的相位值对应于一个特定的二位组。
例如,可用前述的一组相位值来表示格雷码的一组二位组:10,00,01,11。
Sin(t)=2E/tcos[2]4/+∏i]0<=t<=T)1-ft∏2(其中,i=1,2,3,4。
2、框图四、实验结果与分析图一基带信号为周期为127bits的伪随机序列。
图二:已调信号时域波形带宽为7104 HzB点信号的星座图映射,00、01、10、11组合分别映射成-1-j,-1+j,1-j,1+j。
五、实验源码clc;clear all;Num=127;data=randi([0 1],1,Num);figure(1)plot(data)title('基带时域波形');f=20000; %载波频率20kHzRb=20000; %码元速率20kHzTs=1/f;Ns=8000;sample=1*Ns; %每个码元采点数为8000,采样频率为8000*20kHz N=sample*length(data)/2; %总采样点数data1=2*data-1; %正/负极性变换,产生二进制不归零双极性码元%-------------------------将信息源分成两路,分别对信号进行抽样-------------data_1=zeros(1,N); %定义一个长度为N的空数据data_1for i1=1:Num/2data_1(sample*(i1-1)+1:sample*i1)=data1(2*i1-1); %对奇数码元进行采样enddata_2=zeros(1,N);for i2=1:Num/2data_2(sample*(i2-1)+1:sample*i2)=data1(2*i2); %对偶数码元进行采样enda=zeros(1,N);b=zeros(1,N);for j1=1:Na(j1)=cos(2*pi*f*(j1-1)*Ts/Ns); %对余弦载波抽样每个周期采N个点 b(j1)=-sin(2*pi*f*(j1-1)*Ts/Ns); %对正弦载波抽样每个周期采N个点end%---------------------------调制---------------------------data_a=data_1.*a; %a路用余弦调制data_b=data_2.*b; %b路用正弦调制data_c=data_a+data_b;figure(2)subplot(3,1,1)plot(data_a)title('QPSK已调实部时域信号');subplot(3,1,2)plot(data_b)title('QPSK已调虚部时域信号');subplot(3,1,3)plot(data_c);title('QPSK已调信号时域波形');%---------------------绘制调制后波形的频谱图-------------------data_modul1= data_1(1:502000)+1i*data_2(1:502000);data_modul=data_a+1i*data_b;%调制后总的信号figure(3)plot(data_modul1,'o');axis([-2 2 -2 2]);title('星座图');figure(4)QPSK=10*log10(abs(fftshift(fft(data_modul,2048))).^2); %信号的频率值SFreq=linspace(-Rb*sample/2,Rb*sample/2,length(QPSK)); %信号的频率谱范围plot(SFreq,QPSK);title('QPSK已调信号频谱图');xlabel('Frequency');ylabel('Amplitude');hold on;。