BPSK调制解调及误码率的计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%随机产生码元
clc
clear all
num=10;%码元个数
ek=round(rand(1,num,1)); %产生载波
t=0:2*pi/999:2*pi; %周期
num1=1000; %个数
len=length(t);
c=-sin(t); %调制
ektemp=[];
ctemp=[];
for n=1:num
if ek(n)==0
ctemp=[ctemp,-c];
a=zeros(1,len);
ektemp=[ektemp,a];
elseif ek(n)==1
ctemp=[ctemp,c];
a=ones(1,len);
ektemp=[ektemp,a];
end
end
subplot(2,1,1); %分别画出原信号、已调信号示意plot(ektemp,'LineWidth',1.5);
title('原码元');
grid on;
axis([0 num1*num -2.5 2.5]);
subplot(2,1,2);
plot(ctemp,'LineWidth',1.5);
title('已调信号');
grid on;
axis([0, num1*num, -2.5, 2.5]);%相干解调
%本地载波
loca=[];
for n=1:num
loca=[loca,c];%此处c的正负决定解调后是否倒pi end
locb=loca;
%相乘
locc=2*ctemp.*locb;
%低通滤波器
[b,a] = butter(3,2*pi*0.0003,'low'); %信号频率为0.001 locd=filter(b,a,locc);%低通滤波后的信号
figure;
subplot(2,1,1); %相乘后的波形
plot(locc,'LineWidth',1.5);
title('相乘后的信号');
grid on;
axis([0 num1*num -2.5 2.5 ]);
dd=locd+randn(1,10000);
%低通滤波后的信号波形图
subplot(2,1,2);
plot(dd,'LineWidth',1.5);
title('低通滤波后的信号');
grid on;
axis([0 num1*num -2.5 2.5 ]);
%抽样判决
for i=1:num1*num
if(locd(i)>0) %判决,得到解调结果
locd(i)=1;
else
locd(i)=-1;
end
end
figure;
subplot(2,1,1); %分别画出原信号、解调后信号示意
plot(ektemp,'LineWidth',1.5);
title('原码元')
grid on;
axis([0 num1*num -2.5 2.5]);
subplot(2,1,2);
plot(locd,'LineWidth',1.5);
title('解调后的信号');
grid on;
axis([0 num1*num -2.5 2.5 ]);
p=symerr(ektemp,locd)/10 %误码率
%误码率曲线
figure(4)
r=0:2:10;
rr=10.^(r/10);
pe1=1/2*exp(-rr);%相干解调的误码率曲线
hold on
plot(r,pe1,'r');grid on;
pe2=(1-1/2*erfc(sqrt(rr))).*erfc(sqrt(rr));%差分相干解调的误码率曲线plot(r,pe2,'b');xlabel('bpsk,dpsk误码率曲线');
set(gca,'XTick',-6:3:18);