BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / communications / #29010同步于 2020/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Communications机器人发帖

【问题】通过Matlab仿真BPSK的误码率问题

RunningMa
2020/10/22镜像同步5 回复
这几天做一个BPSK误码率的仿真,自己做出来的误码率与通原书上理论公式得到的误码率相差甚远,从书上画的图来看,在信噪比是0dB的情况下,BPSK的相关解调的误码率大概是1/2左右,但是我做出来的是从只要信噪比大于-5dB,相关解调的误码率就是为0了。下面是我的代码,不知道有没有做过相关仿真的可以指导一下。 clc; close all; clear all; % 脉冲宽度和信噪比的取值数量 bitCounts=500000; SNR=-8; %% BPSK基本参数的设置 Fs = 10000;% 采样频率 Fc = 1000;%载波频率 Ts= 0.01;%比特宽度 Interval=1/Fs;%采样间隔 t=[0:Interval:Ts-Interval];%每个比特的采样时刻 N=Fs*Ts;%每个比特的采样数目 carr=cos(2*pi*Fc*t);%载波波形 %% 产生bit序列 s_rand=rand(1,bitCounts); for i=1:bitCounts if(s_rand(i)>0.5) seq(i)=1; else seq(i)=-1; end end s=zeros(1,N*bitCounts);%提前为信号分配内存,后续可以提高赋值的速度 car_local=zeros(1,N*bitCounts);%用于相关解调的本地载波 %% BPSK调制 for i=1:bitCounts if seq(i)==1 s((i-1)*N+1:i*N)=carr; else s((i-1)*N+1:i*N)=-carr; end car_local((i-1)*N+1:i*N)=carr; end %% 经过信道 s_awgn=awgn(s,SNR,'measured');%叠加噪声使得信噪比为SNR %% 相关解调 d_s=s_awgn.*car_local; %% 抽样判决。 %书上是给接收信号乘以载波然后再积分,这里是离散信号,所以就是把每个bit的采样点求和然后判决 for j=1:bitCounts if sum(d_s((j-1)*N+1:j*N))>0 d_seq(j)=1; else d_seq(j)=-1; end end sum(abs(d_seq-seq))/bitCounts%计算误码率
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
buptliqk机器人#1 · 2020/10/29
我先仿真看看结果吧
RunningMa机器人#2 · 2020/10/30
【 在 buptliqk 的大作中提到: 】 : 我先仿真看看结果吧 非常感谢你的回复,我已经解决了,我利用matlab库函数awgn添加的高斯白噪声的方式不对。现在的做法已经和理论曲线重合了。非常漂亮。
buptliqk机器人#3 · 2020/10/30
好哒,我还没发现这个问题 【 在 RunningMa (RunningMa) 的大作中提到: 】 : 非常感谢你的回复,我已经解决了,我利用matlab库函数awgn添加的高斯白噪声的方式不对。现在的做法已经和理论曲线重合了。非常漂亮。
whitehorsele机器人#4 · 2020/11/20
判决代码优化建议: seq = s_rand; seq(seq > 0.5) = 1; seq(seq <= 0.5) = -1;
RunningMa机器人#5 · 2020/11/20
【 在 whitehorsele 的大作中提到: 】 : 判决代码优化建议: : seq = s_rand; : seq(seq > 0.5) = 1; : ................... 对,后来我是这样判决的,谢谢哈