主函數。
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;
end
end
num_err=0;%計算錯誤的次數
for i=1:N
y=randn(1,2); %産生均值為零的正态分布随機變量
r=sqrt(y(1)^2+y(2)^2); %瑞利分布的包絡…….
if (dsource(i)==0)
r0=r*E+gnray(sgma);
r1=gnray(sgma);
else
r1=r*E+gnray(sgma);
r0=gnray(sgma);
end
if(r0>r1)
decis=0;
else
decis=1;
end
if (decis~=dsource(i))
num_err=num_err+1;
end
end
p=num_err/N;
瑞利信道函數。。gnray.m
function [n1,n2]=gnray(m,sgma)
if nargin==0
m=0;
sgma=1;
elseif nargin==1
sgma=m;
m=0;
end
% rayleigh function
u=rand;
z=sgma*(sqrt(2*log(1/(1-u))));
u=rand;
n1=m+z*cos(2*pi*u);
n2=m+z*sin(2*pi*u);
我想請各位高手指教下我的瑞利信道模型寫的對不對。雖然能運作出結果,但是我覺得還是有點問題,到底該如何描述瑞利信道這個乘性噪聲模型呢?謝謝指教