📄 fangzhenpsk.m
字号:
L=10000;
randn('state',sum(500*clock));
t=0:pi/13:2*pi; %取26个取样点
SNR=-12:0.5:3;
snr=SNR/10;
for ii=1:length(SNR)
A(ii)=1/sqrt(2*(10^snr(ii))); %噪声的方差
n11=0;n12=0;n13=0;n21=0;n22=0;n23=0;
S=randint(1,L);
for k=1:L
n=A(ii)*randn(1,length(t));
for i=1:length(t)
s11(i)=cos(t(i));s12(i)=-cos(t(i)); %2PSK
s21(i)=cos(3*t(i));s22(i)=cos(5*t(i)); %2FSK
s31(i)=cos(t(i));s32(i)=0; %2ASK
end
jun11=sum(s11.^2);jun12=sum(s12.^2);
s11=s11/sqrt(jun11);s12=s12/sqrt(jun12);
x11=s11+n;x12=s12+n ; %2PSK
jun21=sum(s21.^2);jun22=sum(s22.^2);
s21=s21/sqrt(jun21);s22=s22/sqrt(jun22);
x21=s21+n;x22=s22+n; %2FSK
jun31=sum(s31.^2);
s31=s31/sqrt(jun31);
x31=s31+n;x32=s32+n; %2ASK
if S(k)==0
ss11=0;ss21=0;ss31=0;men=0;men1=0;men2=0;men3=0;
for i=1:length(t)
ss11=ss11+x11(i)*(s12(i)-s11(i)); %累加求和
ss21=ss21+x21(i)*(s22(i)-s21(i));
ss31=ss31+x31(i)*(s32(i)-s31(i));
men1=men1+(s12(i)^2-s11(i)^2)/2; %门限
men2=men2+(s22(i)^2-s21(i)^2)/2;
men3=men3+(s32(i)^2-s31(i)^2)/2;
end
if ss11>men1
n11=n11+1;
end
if ss21>men2
n12=n12+1;
end
if ss31>men3
n13=n13+1;
end
else
ss11=0;ss21=0;ss31=0;men=0;men1=0;men2=0;men3=0;
for i=1:length(t)
ss11=ss11+x12(i)*(s12(i)-s11(i));
ss21=ss21+x22(i)*(s22(i)-s21(i));
ss31=ss31+x32(i)*(s32(i)-s31(i));
men1=men1+(s12(i)^2-s11(i)^2)/2;
men2=men2+(s22(i)^2-s21(i)^2)/2;
men3=men3+(s32(i)^2-s31(i)^2)/2;
end
if ss11<men1
n21=n21+1;
end
if ss21<men2
n22=n22+1;
end
if ss31<men3
n23=n23+1;
end
end
end
pe1(ii)=(n11+n21)/L;
pe2(ii)=(n12+n22)/L;
pe3(ii)=(n13+n23)/L;
end
figure;
semilogy(SNR,pe1,' -o');hold on;
semilogy(SNR,pe2,'-*');hold on;
semilogy(SNR,pe3,'-^');hold on;
legend('2PSK','2FSK','2ASK');
grid on;
xlabel('信噪比');ylabel('误码率');
title('误码率随信噪比的变化情况');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -