主函数。
SNRindB1=0:2:12;%定义信噪比序列
SNRindB2=0:2:12;%采用dB作为单位
for i=1:length(SNRindB1)
s_e(i)=ray(SNRindB1(i));%计算误码率
end
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10);%转化信噪比为数值表示。。
theo_err_prb(i)= 1/2*(1-sqrt(SNR/(1+SNR))); %瑞利信道下BPSK信号的理论误码率
end
semilogy(SNRindB1,s_e,'*');
hold on
semilogy(SNRindB2,theo_err_prb);
legend(' simulated result',' theoretical result');
hold off
自定义的函数ray.m
function[p]=ray(SNRindB) %用来产生给定信噪比的
N=5000;
E=1; %定义每符号能量
snr=10^(SNRindB/10); %信噪比
sgma=E/sqrt(snr*2); %标准差
%产生数据源
for i=1:N
temp=rand;
if (temp<0.5)
dsource(i)=0;
else
dsource(i)=1;