matlab中生成瑞利信道的两种方法
生活随笔
收集整理的這篇文章主要介紹了
matlab中生成瑞利信道的两种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
方法一:matlab自帶的瑞利信道
comm.RayleighChannel
方法二:復高斯法
當兩個高斯分布正交疊加時,其和的包絡服從瑞利分布。具體推導證明可參見樊昌興的《通信原理》等書。
簡單說就是,a和b為兩個獨立的高斯分布,若r=a+ib,則r是服從瑞利分布的。
參考:
BPSK系統在瑞利衰落信道下的性能-MATLAB基帶仿真
瑞利信道仿真 matlab
matlab代碼
N=10000; % 序列長度 SNR=-5:5; M=2; tx=randi([0,M-1],N,1); % 原始信號 pskSig=pskmod(tx,M); % BPSK調制%% 方法一:瑞利信道 rayleighChan=comm.RayleighChannel(); % 調用自帶的瑞利信道 fadeSig = rayleighChan(pskSig);%% 方法二:復高斯法 h = (randn(N,1)+i*randn(N,1))/sqrt(2); fadeSig3 = h.*pskSig;%% 高斯信道 awgnChan=comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)');%% 信號通過信道 for i=1:length(SNR)awgnChan.SNR=SNR(i);rxSig_rayleigh_awgn = awgnChan(fadeSig);rxSig3_rayleigh_awgn = awgnChan(fadeSig3);rxSig4_awgn = awgnChan(pskSig);rx_rayleigh_awgn=pskdemod(rxSig_rayleigh_awgn,M);rx3_rayleigh_awgn=pskdemod(rxSig3_rayleigh_awgn,M);rx4_awgn = pskdemod(rxSig4_awgn,M);[num1,err1] = biterr(tx,rx_rayleigh_awgn);[num3,err3] = biterr(tx,rx3_rayleigh_awgn);[num4,err4] = biterr(tx,rx4_awgn);BER_rayleigh_awgn(i) = err1;BER3_rayleigh_awgn(i) = err3;BER4_awgn(i) = err4;endBERtheory = berawgn(SNR','psk',M,'nondiff'); semilogy(SNR,BERtheory,'-',SNR,BER4_awgn,'-*'); legend('AWGN理論','AWGN仿真','Location','southwest'); hold on;semilogy(SNR,BER_rayleigh_awgn,'-^',SNR,BER3_rayleigh_awgn,'-x','MarkerSize',10); legend('AWGN理論','AWGN仿真','自帶瑞利信道','復高斯法','Location','southwest'); hold off;圖片
分析
1.matlab自帶的瑞利信道比兩種自建的方法的誤碼率高,因為調用自帶的瑞利信道時,直接是
rayleighChan=comm.RayleighChannel();
打開matlab幫助文檔,可以看到實際的瑞利信道還有多普勒頻移、多徑數量等參數,兩種自建方法并沒有考慮這些因素。
瑞利分布序列疊加法因為是用序列直方圖包絡去接近瑞利分布的概率密度函數,所以誤差更明顯,畢竟瑞利分布是連續的,序列是離散的。
2.信號加噪再經過衰落信道,與信號只加噪相比,誤碼率明顯增大。
3.經過衰落后,誤碼率與信噪比沒什么關系了,說明衰落是引起誤碼的主要原因。可以嘗試去掉衰落信道后面的加噪信道,即只經過衰落。可以發現此時誤碼率沒有根本變化。(衰落是乘性的,高斯噪聲是加性的。雖然一般把對原始信號所有的影響都統稱為噪聲,但誤碼率-信噪比曲線中的噪聲是AWGN,即加性高斯白噪聲,理所當然在衰落過程中,信噪比對誤碼率沒什么影響)
總結
以上是生活随笔為你收集整理的matlab中生成瑞利信道的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux可以用什么c语言编译器,嵌入式
- 下一篇: c语言编译器官网,C语言编译器app_c