实验二 BPSK误码率仿真
2PSK误码率程序及仿真图讲课教案

clear all;close all;clcframe=10000;t=0:pi/180:2*pi;source_code=randint(1,500);SNR=0:0.25:10;carrier1=sin(2*pi*t);carrier2=sin(2*pi*t+pi);Carrier=[carrier1carrier2];snr=10.^(SNR./10);for loop=1:length(source_code)if source_code(loop)==1modulated_signal(loop,:)=carrier1;elsemodulated_signal(loop,:)=carrier2;endendModulated=reshape(modulated_signal',1,loop*length(carrier1)); Modulated_Information=2*source_code-1;for iteration=1:length(SNR)error=0;for i=1:frameadd_noise=awgn(Modulated_Information,SNR(iteration));for address=1:length(add_noise)if add_noise(address)>0demodulated(address)=1;elsedemodulated(address)=0;endif demodulated(address)~=source_code(address)error=error+1;endendendPe(iteration)=error/frame/length(source_code);Pe_theor=(erfc(sqrt(snr))).*(1-0.5*erfc(sqrt(snr)));endfigure(1)semilogy(SNR,Pe_theor,'Marker','o','Color','r');grid on;hold on; semilogy(SNR,Pe,'Marker','*','Color','b')% axis([snrdB_min snrdB_max 0.0001 1]);xlabel('信噪比');ylabel('误码率');title('BPSK信号最佳接收误码率曲线');legend('理论值','实际值');图4-2 BPSK信号误码率的仿真图function [enc_comp]=cm_dpske(E,M,mapping,sequence);k=log2(M);N=length(sequence);reminder=rem(N,k);if(reminder~=0),for i=N+1:N+k-reminder,sequence(i)=0;end;N=N+k-reminde;endtheta=0;for i=1:k:N,index=0;for j=i:i+k-1,index=2*index+sequence(j);endindex=index+1;theta=mod(2*pi*mapping(index)/M+theta,2*pi);enc_comp((i+k-1)/k,1)=sqrt(E)*cos(theta);enc_comp((i+k-1)/k,2)=sqrt(E)*sin(theta);end============================================== function [p]=cm_sm35(SNRindB)N=2000;E=1;snr=10^(SNRindB/10);sgma=sqrt(E/(4*snr));for i=1:2*N;temp=rand;if(temp<0.5),dsource(i)=0;elsedsource(i)=1;endendmapping=[0 1 3 2];M=4;[diff_enc_output]=cm_dpske(E,M,mapping,dsource);for i=1:N,[gsrv1,gsrv2]=gngauss(sgma);r(i,:)=diff_enc_output(i,:)+[gsrv1,gsrv2];endprev_theta=0;numoferr=0;for i=1:N,theta=angle(r(i,1)+j*r(i,2));delta_theta=mod(theta-prev_theta,2*pi);if((delta_theta<pi/4)|(delta_theta>7*pi/4)),decis=[0 0];elseif(delta_theta<3*pi/4),decis=[0 1];elseif(delta_theta<5*pi/4),decis=[1 1];elsedecis=[1 0];endprev_theta=theta;if((decis(1)~=dsource(2*i-1))|(decis(2)~=dsource(2*i))), numoferr=numoferr+1;end;end;p= numoferr/N;=======================================echo onSNRindB1=0:2:12;SNRindB2=0:0.1:12;for i=1:length(SNRindB1),[pe]=cm_sm35(SNRindB1(i));smld_bit_err_prb(i)=pe;echo off;end;echo on;for i=1:length(SNRindB2),SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=Qfunct(sqrt(2*SNR));echo off;end;semilogy(SNRindB2,theo_err_prb);hold onsemilogy(SNRindB1,smld_bit_err_prb,'*');。
bpsk 实验报告

bpsk 实验报告BPSK实验报告引言BPSK(Binary Phase Shift Keying)是一种常用的数字调制方式,它将二进制数据转换成相位的变化来进行传输。
在本次实验中,我们将研究BPSK调制的原理、性能以及在通信系统中的应用。
一、BPSK调制原理BPSK调制是一种相位调制方式,它将二进制数据转换成两个相位状态:0对应0°相位,1对应180°相位。
这种相位变化可以通过正弦波进行表示。
在发送端,二进制数据经过调制器转换成相应的相位信号,然后通过信道传输到接收端。
在接收端,接收到的信号经过解调器解调,得到原始的二进制数据。
二、实验步骤1. 准备工作:搭建BPSK调制与解调实验电路。
将信号源与调制器连接,调制器与解调器连接,解调器与示波器连接。
2. 生成二进制数据:通过信号源生成一串二进制数据,作为待调制的信号。
3. BPSK调制:将二进制数据输入到调制器中,调制器将其转换成相应的相位信号。
通过示波器观察调制后的信号波形。
4. 信号传输:将调制后的信号通过信道传输到接收端。
5. BPSK解调:接收端的解调器将接收到的信号解调,得到原始的二进制数据。
通过示波器观察解调后的信号波形。
6. 性能评估:比较解调后的二进制数据与原始数据,计算误码率(Bit Error Rate, BER),并分析BER与信噪比(Signal-to-Noise Ratio, SNR)之间的关系。
三、实验结果与分析通过实验,我们观察到了BPSK调制与解调的波形,得到了解调后的二进制数据。
根据实验结果,我们计算出了不同SNR下的误码率。
通过绘制误码率-SNR曲线,我们可以看到误码率随着SNR的增加而逐渐减小。
这是因为较高的信噪比可以提高信号的质量,减少误码率。
在实际通信系统中,BPSK调制广泛应用于低速率的数字通信系统,特别是在低信噪比环境下。
由于BPSK调制只有两个相位状态,相对于其他调制方式,它的复杂度较低,抗干扰性能较好。
AWGN信道中BPSK误码率仿真分析

窑26窑
微处理机
2021 年
图 11 整体仿真模型
4结束语
利用数字信号载波传输系统中存在的信道噪声 误码,借助于 AWGN 信道模块和高斯噪声器模块, 在适当参数下得出了相同的仿真结果。随着仿真时 间增加,统计样本随之增加,将使得误码率仿真结果 更加接近理论分析值。基于蒙特卡罗统计方法得到 的仿真结果与理论计算之间具有较好的一致性,而 在实际工程中,要获得通信系统的理论性能往往比 较困难,因此,仿真手段几乎成为通信系统性能评估 的最佳选择。
第3期 2021 年 6 月
微处理机 MICROPROCESSORS
No. 3 Jun.,2021
·微机网络与通信·
AWGN 信道中 BPSK 误码率仿真分析
丁凯
(海军 92785 部队,辽宁 绥中 125208)
摘 要: 针对加性高斯白噪声使数据出现差错对数字通信系统中信号接受端带来的负面效应,
对加性高斯白噪声对信道中误码率性能的影响展开研究。通过介绍 BPSK 的扩频调制解调原理及信
图 3 BPSK 调制信号
实际信道中存在着各种干扰,会对通信系统造 成影响。在加性高斯白噪声信道中,信道的输入信 号将与信号内的高斯白噪声相叠加,导致如图 4 所 示的波形。
图 4 BPSK 叠加高斯白噪声
信号接收机接收到经过调制和叠加了高斯白
图 7 抽样判决后的信号
在实际通信系统中,由于受所处环境、仪器精密 度、电磁干扰等的影响,导致了调制解调存在一定的 误差,此误差即被称为误码率。 2.3 BPSK 调制 BER 的理论性能
2.26伊10-3
在 BPSK 调制与解调模块中增加 AWGN 模块, AWGN 信道中设置 Mode 参数,仿真结果如图 10 所 示。当 Eb/ N0 设置为 100 dB、信噪比取值很大时[6], AWGN 模块不会引入传输错误,如图 10(a)所示,输 入发送信号序列和接收解调输出的信号序列都是由 一连串收发相互一致的双精度随机整数值(1 或 0) 组成。把 Eb/N0 的值修改为-10 dB 后[7],产生了不少错 误,收发数据序列波形变得不一致,如图 10(b)所示。
bpsk 误码率 matlab

bpsk 误码率 matlab以bpsk误码率为标题的Matlab文章引言:误码率是衡量数字通信系统性能的重要指标之一。
在数字通信中,调制技术起着至关重要的作用,而二进制相移键控(BPSK)调制是最常用的一种调制方式之一。
本文将使用Matlab来计算BPSK调制的误码率,并通过实际案例说明其应用。
一、BPSK调制简介BPSK调制是一种基本的数字调制技术,它将二进制数字序列映射到正弦波的相位上。
在BPSK调制中,二进制1和0分别对应于正弦波的两个不同相位。
具体而言,二进制1对应于正弦波的0度相位,而二进制0对应于正弦波的180度相位。
二、BPSK调制的误码率计算方法误码率是指在接收端解调过程中,接收到的比特错误的概率。
在BPSK调制中,误码率的计算可以通过理论公式或仿真方法来实现。
本文将介绍使用Matlab进行仿真计算的方法。
1.生成随机二进制数据序列我们需要生成随机的二进制数据序列,以模拟实际通信环境中的数据传输。
在Matlab中,可以使用randi函数生成指定长度的随机二进制数据序列。
2.进行BPSK调制生成的随机二进制数据序列需要经过BPSK调制,将其映射到正弦波的相位上。
在Matlab中,可以使用pskmod函数实现BPSK调制。
3.添加高斯噪声为了模拟实际通信环境中的噪声干扰,我们需要向BPSK调制后的信号中添加高斯噪声。
在Matlab中,可以使用awgn函数实现高斯噪声的添加。
4.进行BPSK解调接收端收到经过噪声干扰的信号后,需要进行BPSK解调,将其恢复为二进制数据序列。
在Matlab中,可以使用pskdemod函数实现BPSK解调。
5.计算误码率经过BPSK解调后得到的二进制数据序列与发送端的原始数据序列进行比较,即可计算误码率。
在Matlab中,可以使用biterr函数实现误码率的计算。
三、实例演示下面通过一个实例演示如何使用Matlab计算BPSK调制的误码率。
假设我们要传输长度为10000的二进制数据序列,传输信道为高斯信道。
BPSK实验报告

基于MATLAB 仿真的BPSK 在AWGN 信道的误码性能姜杰 通信1班 20080820103摘要:BPSK 全称 : Binary Phase Shift Keying 。
把模拟信号转换成数据值的转换方式之一。
是利用偏离相位的复数波浪组合来表现信息键控移相方式的一种。
BPSK 使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。
由于最单纯的键控移相方式虽抗噪音较强但传送效率差,所以常常使用利用4个相位的QPSK 和利用8个相位的8PSK 。
在载波相位调制中,通信信道传输的信息寄寓在载波相位中,于二进制相位调制而言,两个载波的相位即θ =0和θ =π ,用以代表二进制“1”和“0”,而载波振幅和频率保持不变。
基于MATLAB 的Monte Carlo 仿真可用于分析BPSK 调制在AWGN 信道中的误码性能。
关键字:BPSK 误码性能 AWGN一. BPSK 调制原理:理论上二进制相移键控(BPSK )可以用幅度恒定,而其载波相位随着输入信号m (1、0码)而改变,通常这两个相位相差180°。
如果每比特能量为E b ,则传输的BPSK 信号为:)2cos(2)(c c bbf T E t S θπ+=其中⎩⎨⎧===1180000m m c θ二.BPSK 解调原理:AWGN 信道中,接受信号可表示为:其中和是加性噪声的两个正交分量。
将接受信号与和做互相关,两个相关器的输出即可产生受噪声污染的信号分量,可表示为其中且两正交噪声分量是零均值互不相关的高斯随机过程,于是和的方差是:最佳检测器将接受信号向量r投射到所有可能的传输信号向量之一上,并选对应于最大投影的向量,据此相关准则即为由于全部信号都具有相等的能量,因此数字相位调制的一种等效检测器标准就是计算接收信号向量的相位:并从信号集中选取其相位最接近的信号。
在AWGN信道中,二相相位调制与二进制PAM相同,差错概率为:,其中为每比特能量。
现代通信原理BPSK仿真实验

通信原理BPSK仿真实验一、实验题目利用仿真软件实现BPSK的调制解调,并仿真分析其在高斯信道下的误码性能。
二、实验原理调制过程:信号的产生采用键控法。
原理:用二进制单极性脉冲控制开关选择0相位载波和π相位载波的输出。
解调过程:相干解调。
必须采用相干解调的方式,从接收到的已调信号中提取本地载波,与信号相乘后通过低通滤波器,抽样判决后得到基带信号。
三、实验仿真1、实验系统2、各模块设置系统时钟设置:Sample Rate:5000Hz Stop Time=1{系统中使用的滤波器为巴特沃斯滤波器}(一)以下四个模块为调制过程,产生BPSK信号。
●模块0:产生频率为50Hz的单极性脉冲,控制开关。
●模块1:开关由单极性脉冲控制对两种相位的正弦波进行选择。
(Gate delay=0 Ctrl thresh=1 ) ●模块2和3:生成正弦波,作为载波。
(二)以下模块主要为从接收到的已调信号中提取本地载波。
●模块25:高斯白噪声(Mean=0v Std Dev=1v)●模块30:放大器:增益Gain=-30dB●模块24:带通滤波器,设置在解调之前。
通带为430-570Hz。
●模块23:幂函数,次数为2,将接收到的以调信号平方。
●模块11:带通滤波器(998-1002Hz;BP Filter Order=3)为获取1000Hz的正弦波●模块10:分频器对输入信号进行2分频,为获取500Hz的正弦波●模块15:带通滤波器(490-510Hz;BP Filter Order=3)为获取500Hz的正弦波作为本地载波。
(三)解调过程和抽样判决●模块9和17:组成解调器。
BPSK信号与本地载波通过乘法器,在经过低通滤波器(60Hz恢复数字基带信号对应的模拟信号。
●模块19:非门,判决作用。
●模块20:采样器,采样频率为50Hz。
●模块21:保持器,采样后经保持器得到恢复的波形。
(四)误码性能分析●模块27:误码率图标(Trails=1000)●模块29:终止符(误码=6个)●模块31:终值显示符●模块32:数字延迟器(Delay:20000)3、系统波形分析及相关参数分析模块4:输入波形模块26:BPSK信号可以看到键控法产生的BPSK信号,第一张图中竖着的白线为相位反相点,在第二张放大后的图中可以清晰的看到信号相位相反的地方。
BPSK的误比特率性能进行了仿真

本代码对BPSK的误比特率性能进行了仿真,给出了Mente Carlo仿真结果与理论分析结果的对比。
以下是源代码和仿真结果图:%-------------------------------------------------------------------------% Main Program lavabin 2006.07.25%-------------------------------------------------------------------------% % This program is used to get the BPSK BER curve under AWGN condition % % Assuming that Eb = 0% % Theoretical BER = Q(sqrt(2*Eb/No))%-------------------------------------------------------------------------echo offclcclear allclose alltic% ---------------------------------------------------coefNum = 2^16;SNR_in_dB = [0:0.1:10];signalTx = rand(1, coefNum);signalTx(find(signalTx <= 0.5)) = -1;signalTx(find(signalTx > 0.5)) = +1;[Pe] = BPSK_AWGN_Pe(signalTx, SNR_in_dB);for i = 1:length(SNR_in_dB)SNR(i) = 10^(SNR_in_dB(i)/10);Pe_theoretical(i) = qfunc(sqrt(2*SNR(i)));end% ---------------------------------------------------figure(1);grid onsemilogy(SNR_in_dB, Pe,'go-');hold onsemilogy(SNR_in_dB, Pe_theoretical,'r*-');legend('Pe Actual','Pe Theoretical');title('BPSK BER Performance Evaluation');xlabel('Eb/No');ylabel('BPSK BER');% ---------------------------------------------------echo onsimulation_time = toc%-------------------------------------------------------------------------% End of Function%-------------------------------------------------------------------------%--------------------------------------------------------------------------%% Avetis Ioannisyan% 10/26/05%--------------------------------------------------------------------------% Given desired SNR and the input signal, function outputs prob of error % occuring in AWGN environment such that N(0, No/2). The input signal is% modulated digital using ASK with amplitude -1 and +1%% Example:% coefNum = 2^17;% SNR = [0:0.1:10];%% signalTx = rand(1, coefNum);% signalTx(find(signalTx <= 0.5)) = -1;% signalTx(find(signalTx > 0.5)) = +1;%% [Pe] = BPSK_AWGN_Pe(signalTx, SNR);%% semilogy(SNR, Pe);%-------------------------------------------------------------------------% lavabin 2006.07.25%-------------------------------------------------------------------------function [Pe] = BPSK_AWGN_Pe(signalTx, SNR)% number of coef to generate (length)coefNum = length(signalTx);N0=[]; AWGN=[]; Pe=[]; signalRx=[];% create white noise N(0, 0.5)randn('state',sum(100*clock));% % Reset randomizer% % ------------------------------------------------------------% % Return RANDN to its default initial state.% % randn('state',0)% % ------------------------------------------------------------% % Initialize RANDN to a different state each time.% % randn('state',sum(100*clock))% % ------------------------------------------------------------ AWGN = randn(length(SNR), coefNum);% Construction of AWGN Matrixfor i = 1:length(SNR)% make noise level from specified SNR: No = 1/(10^(SNR/10)) assuming Eb=1N0(i) = 1/(10^(SNR(i)/10)); %generate No, or, sqrt(variance) = No for the WGN noise% adjust for the desired N(0,No/2) => X = mue + sqrt(var)*N(0, 0.5) AWGN(i,:) = sqrt(N0(i)./2) .* AWGN(i,:);% produce received signalsignalRx(i,:) = signalTx + AWGN(i,:);% perform signal detectionsignalRx(i, find(signalRx(i,:) <= 0)) = -1;signalRx(i, find(signalRx(i,:) > 0)) = +1;% estimate error probabilityerror = length(find(signalRx(i,:)-signalTx));Pe(i) = error / coefNum;end%-------------------------------------------------------------------------% End of Function%-------------------------------------------------------------------------下面是图形结果:。
BPSK调制解调及误码率的计算

BPSK调制解调及误码率的计算BPSK (Binary Phase Shift Keying) 是一种基本的数字调制技术,常用于数字通信系统中。
它通过将数字信号映射为相位上的两个值来进行调制,并使用相干解调器进行解调。
本文将介绍BPSK调制解调的原理以及如何计算误码率。
1.BPSK调制原理:在BPSK调制中,每个二进制位(0或1)被映射为两个可能的相位值:0对应于0度相位,1对应于180度相位。
这种相位差可以通过正弦和余弦函数来实现。
-二进制信息序列被输入到调制器中。
-调制器将二进制位转换为相位值,0对应于0度相位,1对应于180度相位。
-经过调制的信号通过信道传输。
2.BPSK解调原理:BPSK解调器的任务是将传输信号恢复为原始的二进制序列。
当信号通过信道传输后,可能会受到噪声和其他干扰的影响,从而导致误码的产生。
BPSK解调的过程如下:-接收到的信号经过信道传输后,会受到噪声和其他干扰的影响,使信号的相位发生随机的偏移。
-解调器使用相干解调的方法测量接收信号的相位。
-根据测量到的相位值,解调器将信号恢复为原始的二进制序列。
3.误码率的计算方法:误码率是衡量通信系统性能的重要指标,它表示在传输过程中发生误码的概率。
对于BPSK调制,误码率的计算可以通过理论分析或仿真实验进行。
理论分析方法:在BPSK调制中,误码率的理论计算可以使用误码率表达式得到。
对于理想的信道,没有噪声和干扰,误码率的表达式为:P_e = Q(sqrt(2*Eb/N0))其中,Eb/N0表示信噪比,Q(x)为高斯函数。
对于有噪声和干扰的实际信道,可以根据信号接收的信噪比进行实际误码率的计算。
仿真实验方法:使用计算机仿真软件,可以模拟BPSK调制解调系统,并通过对大量的二进制序列进行模拟传输和解调,统计接收到的误码数量来计算误码率。
误码率的计算通过测量接收信号中发生错误的比特数与总传输的比特数之比得到。
它通常以对数的形式表示,即以dB为单位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验目的
1.掌握BPSK信号调制、相干解调方法;
2.掌握BPSK信号误码率计算。
实验内容
1.BPSK信号的调制;
2.BPSK信号相干解调;
3.不同信噪比环境下BPSK信号误码率计算,并与理论误码率曲线对比。
实验原理
BPSK信号调制原理
1.系统原理
高斯白噪声
图1 BPSK调制系统原理框图
BPSK调制系统的原理框图如图1所示,其中脉冲成形的作用是抑制旁瓣,减少邻道干扰,通常选用升余弦滤波器;加性高斯白噪声模拟信道特性,这是一种简单的模拟;带通滤波器BPF可以滤除有效信号频带以外的噪声,提高信噪比;在实际通信系统中相干载波需要使用锁相环从接收到的已调信号中恢复,这一过程增加了系统的复杂度,同时恢复的载波可能与调制时的载波存在180度的相位偏差,即180°相位反转问题,这使得BPSK系统在实际中无法使用;低通滤波器LPF用于滤除高频分量,提高信噪比;抽样判决所需的同步时钟需要从
接收到的信号中恢复,即码元同步,判决门限跟码元的统计特性有关,但一般情况下都为0。
2. 参数要求
码元速率1000波特,载波频率4KHz ,采样频率为16KHz 。
BPSK 信号解调原理
BPSK 信号的解调方法是相干解调法。
由于PSK 信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息来解调信号。
图2中给出了一种2PSK 信号相干接收设备的原理框图。
图中经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波器滤除高频分量,在进行抽样判决。
判决器是按极性来判决的。
即正抽样值判为1,负抽样值判为0。
图2 BPSK 解调系统原理框图
BPSK 信号误码率
在AWGN 信道下BPSK 信号相干解调的理论误码率为:12
e P erfc =,其中r 为信噪比2
22n
a r σ=。
在大信噪比(1)r 条件下,上式可近似为:r e P -=
实验结果与分析
BPSK信号调制
根据BPSK信号产生原理,用matlab仿真BPSK信号如图3所示。
图3 BPSK信号调制
查看BPSK信号功率谱如图4所示。
图4 BPSK信号功率谱
BPSK信号解调
根据BPSK信号解调原理,信号乘载波,并进行低通滤波,得到解调后信号如图四所示。
图5 BPSK信号解调
可以看出,经过相干解调后波形发生了较大变化,最后经过抽样判决即可恢复出原始信息,如图6所示。
图6 抽样判决
BPSK信号误码率仿真
将信道中的信噪比以0.5dB从-10dB到8dB变化,每个信噪比得到一个误码率,最后画出误码率曲线和理论曲线如图7所示。
原始信息采用100000比特数据,因此在信噪比较大误码率较低时,仿真结果与理论结果差距逐渐增大;在小信噪比环境下,与理论值较为接近。
从结果中也可以看出,两条曲线之间总存在大约0.5dB的差距,考虑未抽样或滤波等带来的信噪比损失。
将仿真曲线整体减少0.5dB后可以得到如图8所示曲线。
此时与理论值有较好的重合。
这一点具体原因至今还没弄清楚。
实验心得
本次实验掌握了BPSK信号的产生、调制、解调、抽样判决与误码率计算,结果基本与理论相符合。
但是实验中采用数据量较大,程序运行时间在15s左右,还有很大的改进之处,在以后的实验中要注意程序的简洁性与高效性。
图7 误码率仿真
图8 修正后误码率仿真
实验代码
%% BPSK信号调制解调误码率分析
clear all;close all;clc;tic
%383 科
%% 产生随机比特流作为传输信息
bit_len=100000;
bits=randint(1,bit_len);
%% 初始各码元对应的基带波形s(t)
RB=1000; %符号速率
Fs=16000; %采用率
Fd=Fs/RB; %每个码元的采样点数
sig_len=Fd*bit_len;
s=zeros(1,sig_len); %基带信号
for i=1:bit_len
if bits(i)==1
s((i-1)*Fd+1:i*Fd)=ones(1,Fd);
else
s((i-1)*Fd+1:i*Fd)=-1*ones(1,Fd);
end
end
%% BPSK调制
Fc=4000; %载波频率
carrier=cos(2*pi*Fc/Fs*(1:sig_len)); %载波wml=zeros(1,length(-10:0.5:8));
lilun=zeros(1,length(-10:0.5:8));
for j=-10:0.5:8
sig=s.*carrier;
sig=awgn(sig,j);
%----------同步检测法解调-------------
m=sig.*carrier; %同步解调
ss=lpf(m,Fs,2*RB);
%----------抽样判决------------
z=ss(Fd/2:Fd:sig_len); %抽样
% z=z/max(abs(z));
% z=ceil(z);
z(z>=0)=1; %判决
z(z<0)=0;
a=z-bits; %计算误码率c=find(a~=0);
wml((j+10)/0.5+1)=length(c)/bit_len;
k=sqrt(10^(j/10));
lilun((j+10)/0.5+1)=0.5*erfc(k);
end
figure
semilogy(-10:0.5:8,wml,'r');hold on;
semilogy(-10:0.5:8,lilun);hold off;
grid on;legend('仿真误码率','理论误码率');
xlabel('E/N(dB)');ylabel('Pe');
%% 查看调制
figure;
subplot(2,1,1);
plot(0:1/Fd:bit_len-1/Fd,s,'r');
hold on;
plot(0:1/Fd:bit_len-1/Fd,sig);
hold off;axis([0,bit_len,-2,2]);xlabel('*Ts');
title('BPSK调制载频4K,波特率1K,采样率16K'); subplot(2,1,2);
plot(0:1/Fd:16-1/Fd,s(1:16*Fd),'r');
hold on;
plot(0:1/Fd:16-1/Fd,sig(1:16*Fd));
hold off;axis([0,16,-2,2]);xlabel('*Ts');
title('BPSK调制信号:16个符号');
%% 查看功率谱
p1=fftshift(abs(fft(s)));
p2=fftshift(abs(fft(sig)));
x=-Fs/2:Fs/sig_len:Fs/2-Fs/sig_len;
figure;
subplot(2,1,1);
plot(x/1000,p1);
xlabel('KHz');
title('基带信号频谱');
subplot(2,1,2);
plot(x/1000,p2);
xlabel('KHz');
title('BPSK信号频谱');
%% 查看解调
figure;
subplot(2,1,1);
plot(0:1/Fd:bit_len-1/Fd,s,'r');
hold on;
plot(0:1/Fd:bit_len-1/Fd,ss);
hold off;axis([0,bit_len,-2,2]);xlabel('*Ts');
title('BPSK解调信号');
subplot(2,1,2);
plot(0:1/Fd:16-1/Fd,s(1:16*Fd),'r');
hold on;
plot(0:1/Fd:16-1/Fd,ss(1:16*Fd));
hold off;axis([0,16,-2,2]);xlabel('*Ts');
title('BPSK解调信号:16个符号');
其中用到的lpf低通滤波器函数为:function s = lpf(x,fs,fm)
%FIR低通滤波器
%对信号x滤波采样率fs 截止频率fm N=64;
h=fir1(N,fm/(fs/2));
s=conv(x,h);
s=s(N/2+1:length(x)+N/2);。