matlab中step_使用MATLAB中bertool进行通信仿真
MATLAB中的Communication System Toolbox中的bertool圖像化工具bertool提供了極為方便的通信仿真環(huán)境以測試仿真模型的誤比特率性能,并且可以很好地和理論值進(jìn)行對比。在MATLAB的命令行中輸入bertool即可打開如下窗口:
bertool窗口以上篇文章的QPSK調(diào)制為例,講解bertool的使用方法。首先切換到Monte Carlo Carlo選擇欄,指定需要仿真的MATLAB文件,該MATLAB文件為一個自定義的函數(shù),函數(shù)需要設(shè)置以下輸入,包括Eb/N0值、停止條件,其中停止條件包括最大誤比特?cái)?shù)和最大比特?cái)?shù),當(dāng)滿足其中一個停止條件時,仿真循環(huán)停止。其中自定義仿真代碼部分如下所示
function [ber, bits]=qpsk(EbNo, maxNumErrs, maxNumBits) % 輸入?yún)?shù)及輸出參數(shù)設(shè)置,需按模板書寫 %% 初始化 persistent Modulator AWGN DeModulator BitError if isempty(Modulator) Modulator = comm.QPSKModulator('BitInput',true); AWGN = comm.AWGNChannel; DeModulator = comm.QPSKDemodulator('BitOutput',true); BitError = comm.ErrorRate; end %% 相關(guān)仿真常數(shù) FRM=2048; M=4; k=log2(M); snr = EbNo + 10*log10(k); AWGN.EbNo=snr; %% 仿真主循環(huán) numErrs = 0; numBits = 0;results=zeros(3,1); while ((numErrs < maxNumErrs) && (numBits < maxNumBits)) % 發(fā)射器 u = randi([0 1], FRM,1); % Random bits generator mod_sig = Modulator.step(u); % QPSK Modulator % 信道 rx_sig = AWGN.step(mod_sig); % AWGN信道 % 接收器 demod = DeModulator.step(rx_sig); % QPSK Demodulator y = demod(1:FRM); % 輸出bit results = BitError.step(u, y); % 更新BER numErrs = results(2); numBits = results(3); end %% 重置誤比特率統(tǒng)計(jì)模塊 ber = results(1); bits= results(3); reset(BitError);編寫好仿真文件后,對bertool中的參數(shù)進(jìn)行如下設(shè)置:
bertool仿真參數(shù)設(shè)置
仿真結(jié)束后會自動產(chǎn)生誤比特率曲線如下:
將bertool的tab標(biāo)簽切到'Theoretical'下,填寫Eb/N0的范圍、信道類型、調(diào)制模式及信道編碼即方便地得到該調(diào)制方式在何種信道類型及信道編碼情況下的理論誤比特率,參數(shù)填寫如下:
理論誤比特率參數(shù)設(shè)置最終可以得到在其他情況相同的情況下,仿真和理論誤比特率的曲線圖:
理論與仿真誤比特率曲線圖可以看出理論與仿真的誤比特率曲線能夠較好地重合,說明仿真部分代碼無誤,該工具主要解決了對各種仿真參數(shù)設(shè)置的麻煩,通過界面選擇填寫即可解決。
參考文獻(xiàn)
其中代碼主要源自《Understanding LTE with MATLAB》,本文主要對其進(jìn)行注釋、分析與方便自己仔細(xì)理解代碼思路,學(xué)習(xí)寫文章的過程,后期將放上自己學(xué)習(xí)過程中寫的其他一些分析與代碼!!
歡迎大家評論、私信交流、批評與指正!!
總結(jié)
以上是生活随笔為你收集整理的matlab中step_使用MATLAB中bertool进行通信仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql查看比较大的数据表_mysql
- 下一篇: mysql week 参数_MySQL