BPSK的matlab仿真原理加源代码.docx

上传人:牧羊曲112 文档编号:3153574 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.44KB
返回 下载 相关 举报
BPSK的matlab仿真原理加源代码.docx_第1页
第1页 / 共6页
BPSK的matlab仿真原理加源代码.docx_第2页
第2页 / 共6页
BPSK的matlab仿真原理加源代码.docx_第3页
第3页 / 共6页
BPSK的matlab仿真原理加源代码.docx_第4页
第4页 / 共6页
BPSK的matlab仿真原理加源代码.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《BPSK的matlab仿真原理加源代码.docx》由会员分享,可在线阅读,更多相关《BPSK的matlab仿真原理加源代码.docx(6页珍藏版)》请在三一办公上搜索。

1、BPSK的matlab仿真原理加源代码BPSK误码率的Matlab仿真实验 作者:黄准 南京航空航天大学,江苏省 南京市 430062 摘要:对于刚刚从事通信领域研究性工作的研究生来说,很有必要通过Matlab强大的仿真功能来强化理解通信信号处理的过程。本文正是通过对BPSK的Matlab仿真来提供一个比较好的实例。 关键词:BPSK,高斯白噪声,带通滤波器,载波,抽样判决 1 BPSK的理论分析 1.1 基本原理cosv0t WGN s(t) A(t) 相乘器 加法器 BPF A(t) 抽样判决 LPF 相乘器 定时脉冲 图1.1 BPSK相干解调原理框图 cosv0t 输入信号A(t)可表

2、示为: A(t)=an*g(t-NTb)N(1.1-1) 式中g(t-NTb)为矩形波,而an表达式如下: 对A(t)进行傅里叶变换,得到A(t)的功率谱密度ps(f): 得到A(t)的频谱图如1.2所示 图1.2 矩形基带信号频谱 A(t)与载波相乘: s(t)=A(t)*coswct 其频谱图如图1.3所示: 图1.3 图中fc为载波频率,fs=1/Tb=Rb(码速率),故带通滤波器的中心频率为fc,带宽至少为2fs。 经过带通滤波器的高斯白噪声变成了窄带高斯信号,可以表示为: 经过带通滤波器后的信号为y(t) y(t)=s(t)+n(t) 与载波相乘后再经过低通滤波器滤除高频分量得到x(

3、t) 由x(t)的功率谱密度图可知,最佳判决门限为0;误码率Pe=0.5*erfc(sqrt(r);式中信噪比r=A2/2*2,2为窄带高斯信号的方差,由于其均值为0,故噪声功率就是其方差。 图1.4 附录: clear all clc num = 5000; %码元数 Rb = 1000; %码速率2*Rb2*(fp+Rb) fp = 100000; %载波频率 t = 0:1/fs:num/Rb-1/fs; %时间t的长度与间隙。 panjue1 = zeros(1,num); %基带传输的判决输出 panjue2 = zeros(1,num); %频带传输的判决输出 pe1 = zero

4、s(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(nwgnnois

5、e); %为了减少运算量。 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.*si

6、n(2*pi*fp*t); %产生频带信号 noise = randn(1,num*tnum); %产生标准正态分布的高斯白噪声信号 snr = 10(SNR_db/10); %信噪比换算 sigma = sqrt(1/(2*snr); %求出高斯白噪声标准差 s2 = in2+noise*sigma; %基带传输 s1 = inn+noise*sigma; %频带传输,暂未用上 %带通滤波器 v = filter(a1,b1,inn); %对载波信号进行带通滤波 nwgnnoise = filter(a1,b1,noise); %对WGN进行带通滤波,此处分开滤波是为了对窄带高斯信号的功率进

7、行处理 nwgnnoise = nwgnnoise/stdnwgn; %使得滤波后的窄带高斯噪声任然为正态分布 nwgnnoise = nwgnnoise*sigma; %改变噪声功率使其符合预设的信噪比。 v = v+nwgnnoise; %经过带通滤波器后的信号 v2 = v.*sin(2*pi*fp*t); %与载波相乘 v = filter(a2,b2,v2); %进行低通滤波 i = 1; %进行抽样判决 while i 0 %基带抽样判决 panjue1(i) = 1; else panjue1(i) = -1; end if v(i*tnum-tnum/2) 0 %频带抽样判决

8、panjue2(i) = 1; else panjue2(i) = -1; end i = i+1; end pe1(s) = length(find(panjue1=in1)/num; %基带误码率 pe2(s) = length(find(panjue2=in1)/num; %频带误码率 s = s+1; end figure(1); subplot(3,2,1); pwelch(in2,fs); title(基带信号频谱); figure(1); subplot(3,2,2); pwelch(inn,fs); title(频带信号); figure(1); subplot(3,2,4);

9、 plot(w1,h1); title(带通信号频谱); figure(1); subplot(3,2,3); plot(w2,h2); title(低通信号频谱); figure(1); subplot(3,2,5); pwelch(noise,fs); title(高斯白噪声信号频谱); figure(1); subplot(3,2,6); pwelch(nwgnnoise,fs); title(窄带高斯信号频谱); figure(3); SNR_db = -5:10; pelilun = 0.5*erfc(sqrt(10.(SNR_db)./10); semilogy(SNR_db,pe1,-or);hold on; semilogy(SNR_db,pe2,-ob);hold on; semilogy(SNR_db,pelilun,-og); legend(基带误码率曲线,频带误码率曲线,理论误码率曲线);grid on;hold on; xlabel(SNR_db); ylabel(pe);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号