📄 wumalv.m
字号:
clear all;
close all;
M=4;
EsNodB=0:0.5:20;
EsNo=10.^(EsNodB/10);
Es=1;
No=10.^(-EsNodB/10);
sigma=sqrt(No/2);
error=zeros(1,length(EsNodB));
s_data=zeros(1,length(EsNodB));
for k=1:length(EsNodB)
error(k)=0;
s_data(k)=0;
while error(k)<1000
d=ceil(rand(1,10000)*M);
s=sqrt(Es)*exp(j*2*pi/M*(d-1));
r=s+sigma(k)*(randn(1,length(d))+j*randn(1,length(d)));
for m=1:M
rd(m,:)=abs(r-sqrt(Es)*exp(j*2*pi/M*(m-1)));
end
for m=1:length(s)
dd(m)=find(rd(:,m)==min(rd(:,m)));
if dd(m)~=d(m)
error(k)=error(k)+1;
end
end
s_data(k)=s_data(k)+10000;
end
end
Pe=error./s_data;
Ps=erfc(sqrt(EsNo)*sin(pi/M));
Pb=erfc(sqrt(EsNo)*sin(pi/M))/2;
semilogy(EsNodB,Pe,'-');hold on;
semilogy(EsNodB,Ps,'d');hold on;
semilogy(EsNodB,Pb,'o');
xlabel('Es/No(dB)');ylabel('差错率');
legend('理论计算结果','误符号率','误比特率');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -