BPSK的matlab仿真原理加源代码.doc
文本预览下载声明
BPSK误码率的Matlab仿真实验
作者:黄准
南京航空航天大学,江苏省 南京市 430062
摘要:对于刚刚从事通信领域研究性工作的研究生来说,很有必要通过Matlab强大的仿真功能来强化理解通信信号处理的过程。本文正是通过对BPSK的Matlab仿真来提供一个比较好的实例。
关键词:BPSK,高斯白噪声,带通滤波器,载波,抽样判决
1 BPSK的理论分析
1.1 基本原理加法器
加法器
s(t)
相乘器
BPF
相乘器
LPF
抽样判决
A(t)
WGN
定时脉冲
A(t)
图1.1 BPSK相干解调原理框图
输入信号A(t)可表示为:
(1.1-1)
式中为矩形波,而表达式如下:
对A(t)进行傅里叶变换,得到A(t)的功率谱密度(式中Ts为码元时间长度):
得到A(t)的频谱图如1.2所示(图中Tb为码元时间长度)
图1.2 矩形基带信号频谱
A(t)与载波相乘:
其频谱图如图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 all
clc
num = 5000; %码元数
Rb = 1000; %码速率2*Rb=fs
tnum = 500; %没一个码元用tnum个点代替
fs = Rb*tnum; %采样频率fs2*(fp+Rb)
fp = 100000; %载波频率
t = 0:1/fs:num/Rb-1/fs; %时间t的长度与间隙。
panjue1 = zeros(1,num); %基带传输的判决输出
panjue2 = zeros(1,num); %频带传输的判决输出
pe1 = zeros(1,15); %基带传输的误码率矩阵
pe2 = zeros(1,15); %频带传输的误码率矩阵
a = 2*(fp-2*Rb)/fs; %带通滤波器的第一截止频率
b = 2*(fp+2*Rb)/fs; %带通滤波器的第二截止频率
s = 1; %循环累加数
%
[a1,b1] = butter(2,[a,b]); %采用butter滤波器,得到butter滤波器的H(z)的分子分母参数
noise = randn(1,num*tnum); %产生正态分布参数
nwgnnoise = filter(a1,b1,noise); %对WGN进行带通滤波
stdnwgn = std(nwgnnoise); %为了减少运算量。
[a2,b2] = butter(2,b); %低通滤波
[h1 w1] = freqz(a1,b1); %带通滤波器频谱
[h2 w2] = freqz(a2,b2); %低通滤波器频谱
%以上一段代码是为了防止加重计算机的计算量而从循环中提出来的。
%
for SNR_db = -5:10;
in = randint(1,num);
in1 = 2*in-1;
g = ones(1,tnum);
inn = upsample(in,tnum);
inn = filter(g,1,inn);
in2 = inn*2-1; %以上一段代码产生基带信号
inn = in2.*sin(2*pi*fp*t); %产生频带信号
noise = randn(1,num*tnum); %产生标准正态分布的高斯白噪声信号
snr = 10^(SNR_db/10); %信噪比换算
sigma = sqrt(1/(2*snr));
显示全部