天天看點

matlab信号經過瑞利,Matlab關于 BPSK信号通過瑞利信道的誤碼性能分析的仿真實驗....

主函數。

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);

我想請各位高手指教下我的瑞利信道模型寫的對不對。雖然能運作出結果,但是我覺得還是有點問題,到底該如何描述瑞利信道這個乘性噪聲模型呢?謝謝指教