BPSK调制解调及误码率的计算

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

相关文档
最新文档