BPSK误码率仿真

合集下载

现代通信原理BPSK仿真实验

现代通信原理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的matlab仿真原理加源代码

BPSK的matlab仿真原理加源代码

BPSK 误码率的Matlab 仿真实验作者:黄准南京航空航天大学,江苏省 南京市 430062摘要:对于刚刚从事通信领域研究性工作的研究生来说,很有必要通过Matlab 强大的仿真功能来强化理解通信信号处理的过程。

本文正是通过对BPSK 的Matlab 仿真来提供一个比较好的实例. 关键词:BPSK,高斯白噪声,带通滤波器,载波,抽样判决1 BPSK 的理论分析1。

1 基本原理图1.1 BPSK 相干解调原理框图输入信号A (t )可表示为:∑-=Nb n NT t g a t A )(*)( (1。

1-1)式中)(b NT t g -为矩形波,而n a 表达式如下:对A(t)进行傅里叶变换,得到A(t )的功率谱密度)(f p s (式中Ts 为码元时间长度):得到A (t )的频谱图如1。

2所示(图中Tb 为码元时间长度)加法器s(t)相乘器BPF相乘器LPF 抽样判决 WGNt 0cos ϖt 0cos ϖ图1.2 矩形基带信号频谱A(t )与载波相乘:t w t A t s c cos *)()(其频谱图如图1.3所示:图1.3图中fc 为载波频率,fs=1/Tb=Rb (码速率),故带通滤波器的中心频率为fc ,带宽至少为2fs. 经过带通滤波器的高斯白噪声变成了窄带高斯信号,可以表示为:经过带通滤波器后的信号为y (t )y(t )=s(t )+n (t )与载波相乘后再经过低通滤波器滤除高频分量得到x(t)由x(t)的功率谱密度图(图1.4所示)可知,最佳判决门限为0;误码率Pe=0。

5*erfc(sqrt (r));式中信噪比r=A^2/2*σ^2,σ^2为窄带高斯信号的方差,由于其均值为0,故噪声功率就是其方差。

图1.4附录:clear allclcnum = 5000;%码元数Rb = 1000;%码速率2*Rb〈=fstnum = 500; %没一个码元用tnum个点代替fs = Rb*tnum; %采样频率fs〉2*(fp+Rb)fp = 100000; %载波频率t = 0:1/fs:num/Rb-1/fs; %时间t的长度与间隙。

AWGN信道中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)调制是最常用的一种调制方式之一。

本文将使用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误码率仿真

BPSK误码率仿真

B P S K误码率仿真-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN实验报告实验目的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,负抽样值判为-1。

图2 BPSK 解调系统原理框图BPSK 信号误码率在AWGN 信道下BPSK 信号相干解调的理论误码率为:12e P erfc =,其中r 为信噪比222na r σ=。

在大信噪比(1)r→条件下,上式可近似为:r eP-=实验结果与分析BPSK信号序列的产生根据BPSK特点,用matlab的randsrc(1,num,[-1,-1])产生1或者-1的均匀分布的随机序列,作为BPSK信号。

qpsk、bpsk蒙特卡洛仿真matlab代码

qpsk、bpsk蒙特卡洛仿真matlab代码

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代码可以通过以上步骤实现。

通过对系统性能进行全面评估,可以帮助工程师优化通信系统设计,提高系统的可靠性和稳定性。

matlab误码率仿真代码

matlab误码率仿真代码

matlab误码率仿真代码以下是一个简单的 MATLAB 误码率仿真代码示例,用于模拟二进制传输系统的误码率。

在这个示例中,我们将使用 BPSK(二进制相移键控)调制来进行仿真。

matlab.% 设置参数。

SNR_dB = 0:1:10; % 信噪比范围。

numBits = 1e6; % 要传输的比特数。

ber = zeros(size(SNR_dB)); % 初始化误码率向量。

for i = 1:length(SNR_dB)。

% 生成随机的二进制数据。

txBits = randi([0,1],1,numBits);% BPSK调制。

txSignal = 2txBits 1;% 添加高斯噪声。

noiseVar = 10^(-SNR_dB(i)/10);noise =sqrt(noiseVar/2)(randn(1,numBits)+1irandn(1,numBits)); rxSignal = txSignal + noise;% BPSK解调。

rxBits = real(rxSignal) > 0;% 计算误码率。

ber(i) = sum(rxBits ~= txBits)/numBits;end.% 绘制误码率曲线。

semilogy(SNR_dB,ber,'o-');xlabel('SNR (dB)');ylabel('Bit Error Rate');title('BPSK误码率仿真');grid on;在这个示例中,我们首先设置了信噪比范围和要传输的比特数。

然后我们使用 for 循环来遍历不同的信噪比值。

在每个循环中,我们生成随机的二进制数据,并将其进行 BPSK 调制。

接着我们添加高斯噪声,并进行 BPSK 解调。

最后我们计算误码率,并将结果绘制成误码率曲线。

这个示例代码可以帮助你了解如何使用 MATLAB 进行简单的误码率仿真。

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调制解调及误码率的计算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为单位。

2PSK误码率程序及仿真图

2PSK误码率程序及仿真图

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;endendPe(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,'*');。

PSK理论误码率与实际误码率MATLAB仿真程序

PSK理论误码率与实际误码率MATLAB仿真程序

PSK理论误码率与实际误码率MATLAB仿真程序%%pskclc;clear all;close all;nsymbol = 1e6;%%每种信噪比下符号数的发送符号数data = randint(1,nsymbol,[0,1]);%%产生1行,nsymbol列均匀分布的随机数0,1bpsk_mod = 2*data-1;%%调制,0转化为-1;1转化为1spow = norm(bpsk_mod).^2/nsymbol;%%求每个符号的平均值,其中norm是求向量2范数函数SNR_dB = 1:10;%%%信噪比dB形式SNR = 10.^(SNR_dB/10);%%信噪比转化为线性值for loop= 1:length(SNR)sigma = sqrt(spow/(2*SNR(loop)));%%%根据符号功率求噪声功率s_receive = bpsk_mod+sigma*(randn(1,length(bpsk_mod))+j*randn(1,lengt h(bpsk_mod)));%%添加复高斯白噪声bpsk_demod = (real(s_receive)>0);%%%解调data_receive=double(bpsk_demod);%%接收数据,转化为[err,ser(loop)] = symerr(data,data_receive);%误码率endser_theory = qfunc(sqrt(2*SNR));%理论误码率,注意Q函数和误差函数的对应关系semilogy(SNR_dB,ser,'-k*',SNR_dB,ser_theory,'-bo');title('BPSK信号在AWGN信道下的性能');xlabel('信噪比/dB');ylabel('误码率');legend('误码率','理论误码率');grid on;。

2PSK误码率程序及仿真图

2PSK误码率程序及仿真图

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;endendPe(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,'*’);。

实验4-BPSK调制解调仿真

实验4-BPSK调制解调仿真

实验四BPSK调制解调仿真【实验目的】加深移动通信系统中调制解调的理解;能够使用 Matlab(或者 C 语言)进行通信系统调制解调基带仿真,并进行性能分析;【实验内容】使用 Matlab (或者 C 语言)仿真 BPSK调制解调(只能相干解调)过程;比较发送端星座图以及不同信噪比下接收端星座图的不同;仿真 AWGN 信道下 BPSK的误码率;【实验设备】一台PC机【实验步骤】1.产生发送信息比特;2.对信息比特进行 BPSK调制;3.将 BPSK调制后的发送信号经过 AWGN 信道,从而获得接收信号波形;4.比较发送端星座图以及不同信噪比下接收端星座图的不同;5.对接收信号进行 BPSK解调;6.通过蒙特卡洛方法,仿真系统误码率,画出 BPSK调制解调误码率曲线。

【实验报告】按照要求完成实验报告。

实验报告中要求给出不同信噪比条件下(信噪比分别为-5dB,0dB,5dB,10dB)接收端的星座图。

画出AWGN 信道下 BPSK调制解调误码率曲线。

一、仿真程序及说明clc;clear all ;n=1000;SNR=[-5 0 5 10];source=randint(1,n);In_BPSK=source*2-1;for i=1:length(SNR)Y(i,:)=AWGN(In_BPSK,SNR(i));endY_RE=Y;Y_RE(find(Y>0))=1;Y_RE(find(Y<0))=0;for i=1:length(SNR)Y_ERRO(i,:)=abs(Y_RE(i,:)-source)Y_BIT(i)=sum(Y_ERRO(i,:))/n/误码率 = 错误码元数 / 传输总码元数endsemilogy(SNR,Y_BIT);grid on ;title(' 误码率' );figuresubplot(4,1,1);plot(Y(1,:),0,'*');title('SNR=-5dB');subplot(4,1,2);plot(Y(2,:),0,'*');title('SNR=0dB');subplot(4,1,3);plot(Y(3,:),0,'*');title('SNR=5dB')subplot(4,1,4);plot(Y(4,:),0,'*');title('SNR=10dB');二、总结通过这次试验,巩固的BPSK调制解调以及星座图的知识,也让我们对于不同性噪比下系统性能的优异有了更深的认识。

ook bpsk 误码率

ook bpsk 误码率

ook bpsk 误码率OOK和BPSK是两种常见的调制方式,它们分别代表了光学开关调制和二进制相移键控调制。

误码率是衡量通信系统性能的重要指标之一,它表示了在传输过程中出现错误的概率。

本文将以OOK和BPSK 的误码率为主题,详细介绍这两种调制方式的特点和误码率的计算方法。

一、OOK调制和误码率OOK调制是一种基础的光通信调制方式,通过改变光信号的强度来表示数字信号的0和1。

当发送端要发送1时,光信号的强度为高电平;当发送端要发送0时,光信号的强度为低电平。

接收端通过检测光信号的强度来判断接收到的是0还是1。

当光信号经过传输通道时,会受到噪声的影响,导致接收端无法准确地判断光信号的强度。

这就会产生误码,即接收到的信号与发送的信号不一致。

误码率就是在一定时间内,接收到的错误比特数与发送的比特总数之比。

计算OOK的误码率需要考虑信噪比的影响。

信噪比是信号功率与噪声功率之比,表示信号的强度与噪声的强度之间的关系。

当信噪比较高时,误码率较低;当信噪比较低时,误码率较高。

二、BPSK调制和误码率BPSK调制是一种常用的数字通信调制方式,通过改变载波信号的相位来表示数字信号的0和1。

当发送端要发送1时,载波信号的相位不变;当发送端要发送0时,载波信号的相位相差180度。

接收端通过检测载波信号的相位来判断接收到的是0还是1。

与OOK调制类似,BPSK调制也会受到噪声的影响,导致误码的产生。

误码率的计算方法也与OOK调制相似,需要考虑信噪比的影响。

三、误码率的计算方法误码率的计算方法有多种,常见的一种是使用误码率公式。

误码率公式是由信道容量定理推导出来的,可以用于计算不同调制方式下的误码率。

在OOK调制中,误码率的计算可以使用二进制对称信道容量公式。

该公式表示了在二进制对称信道中传输的比特数与误码率之间的关系。

在BPSK调制中,误码率的计算也可以使用二进制对称信道容量公式。

不同的是,在BPSK调制中,信噪比的计算需要考虑到相位差对误码率的影响。

bpsk仿真

bpsk仿真

% main_2psk,主程序。

2PSK调制解调(相干检测)系统仿真。

AWGN信道。

误码率测试。

理论误码率。

clear;% 公共参数:num_dtct=5000; % 检测总次数(发送、接收的二进制符号数)cnt_Err=0; % 错误计数cnt_dtct=0; % 检测计数T=1; % 符号时宽M=2*10^3; % 符号时宽内采样点数h=T/M; % 采样间隔,步长% 2PSK调制所使用的波形:g1=sub_sin_wav(T,1,0,M); % 正弦波。

能量归一。

参数:时宽,谐波次数,初相位,采样点数。

subplot(2,1,1);plot(g1);Fg1=fft(g1)/(M/2); % 谱分析AFg1=abs(Fg1); % 模值subplot(2,1,2);stem(AFg1(1:10));a1=AFg1(2)% 发送、传输、接收、检测(num_dtct次):SNR1=4.32 % 信噪比。

dB。

Eb/N0。

N0=1/10^(SNR1/10); % 每谐波成份所具有的功率,W。

噪声功率谱密度。

Pn=N0*(M/2); % 噪声功率。

Pn_dB=10*log10(Pn); % 噪声功率的dBW数。

for cnt_dtct=1:num_dtct % 循环,调制、解调、检测num_dtct次。

Di=randsrc(1,1); % 发送数据, 1行1位伪随机码,码元取值为+1,-1 n=wgn(1,M,Pn_dB); % 白噪声波形 n(t),1行,M点。

x1=g1; % 发送。

发送用波形x1。

s1=Di*x1; % 调制。

产生已调2PSK信号。

r=s1+n; % 接收信号y1=g1; % 接收端相关使用的波形y1。

(恢复的载波)R1=sub_projct(r,y1,T,M); % 相关,r,y1相乘、[0,T]内积分。

(接收信号r在y1上的投影)if R1>0 % 判决,得到恢复的数据 Dr1。

AWGN信道中BPSK调制系统BER仿真计算

AWGN信道中BPSK调制系统BER仿真计算

AWGN信道中BPSK调制系统BER仿真计算在数字通信系统中,信道的性能评估是非常重要的。

误码率(Bit Error Rate,简称BER)是衡量数字通信系统性能的一个关键指标。

在本文中,我将介绍如何使用AWGN信道进行BPSK调制系统的BER仿真计算。

首先,让我们了解一下AWGN(Additive White Gaussian Noise)信道。

AWGN信道是一种常见的信道模型,它假设信道中的噪声是服从高斯分布(即白噪声)的,并且是相加于信号的。

在BPSK调制系统中,发送端将比特流转换为相位调制(即BPSK)信号,然后通过AWGN信道传输,最后在接收端将相位调制信号转换回比特流。

BER是接收端比特流与发送端比特流之间的错误比特数,它是衡量系统性能的一个重要指标。

对于BER的仿真计算,我们可以按照以下步骤进行:1. 设置系统参数:首先,我们需要设置BPSK调制系统的参数,包括发送信号的比特数、信噪比(Signal-to-Noise Ratio,简称SNR)和信道的噪声功率。

比特数决定了仿真计算需要传输多少个比特进行统计,SNR决定了信号在传输过程中受到噪声的影响程度,而信道的噪声功率则是根据SNR计算得出的。

2.生成发送信号:根据设置的比特数,生成随机的比特流作为发送信号。

对于BPSK调制系统,每个比特可以表示为-1或+1,并将其映射为0°或180°的相位调制信号。

3.添加噪声:使用AWGN信道模型,将生成的发送信号与高斯噪声相加以模拟信道传输过程中的噪声。

4.接收信号处理:在接收端,我们需要对接收到的信号进行相位解调以恢复比特流。

相位解调的原理是通过对接收信号的相位进行判决,将其映射为-1或+15.计算误码率:比较接收到的比特流与发送比特流,统计错误比特的数量,并计算出BER。

6.重复以上步骤:重复执行1-5步,用不同的随机比特流进行仿真计算,以减小误差。

通过以上步骤,我们可以得到不同SNR下的BER仿真结果。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,负抽样值判为-1。

图2 BPSK 解调系统原理框图
BPSK 信号误码率
在AWGN 信道下BPSK 信号相干解调的理论误码率为:12
e P erfc =,其中r 为信噪比2
22n
a r σ=。

在大信噪比(1)r →条件下,上式可近似为:r e P -=
实验结果与分析
BPSK信号序列的产生
根据BPSK特点,用matlab的randsrc(1,num,[-1,-1])产生1或者-1的均匀分布的随机序列,作为BPSK信号。

在本实验中没有加载频,是对序列直接做处理,在序列中中加入不同信噪比的高斯白噪。

BPSK信号解调
对经过信道传输的,含有噪声的BPSK信号进行判决,在本实验中判决门限定为0。

当信号大于0时判为1,小于0时判为-1,从而恢复出原信号。

BPSK信号误码率仿真
将信道中的信噪比以1dB步进从0dB到10dB变化,每个信噪比得到一个误码率。

原始信息采用100000比特数据,对最后的误码率取以10为底的对数得到误码率理论与仿真图如下:
实验心得
本实验直接在序列的基础上进行加噪处理并得到仿真结果,并没有加载波,实验比较简单。

从结果来看,基本与理论相近,由于实验所取的数据量有限,所以在信噪比较大时出现的偏差比较大,如果想要结果更好,就应该将原始数据的点数取多。

实验代码
clc;clear all;close all;
num=100000;
for SNR=0:10
data_bpsk=randsrc(1,num,[1,-1]);
snr=1/(10^(SNR/10));
noise=sqrt(snr/2)*(randn(1,num));
receive=data_bpsk+noise;
pe(SNR+1)=0;
for(i=1:num)
if (receive(i)>=0)
r_data(i)=1;
else r_data(i)=-1;
end
end
pe(SNR+1)=(sum(abs((r_data-data_bpsk)/2)))/num;
peb(SNR+1)=0.5*erfc(sqrt(10^(SNR/10)));
end
r=0:10;
semilogy(r,peb,'b-v',r,pe,'m-x');%对y取底为10对数
grid on;legend('理论误码率曲线','仿真误码率曲线');
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求。

相关文档
最新文档