“原文 Understanding LTE with MATLAB ,作者Houman Zarrinkoub,本文是對于該書的翻譯,書中的專業(yè)性詞匯給出了英文原文,圖和表的排版都是參考原文,翻譯不準確的地方請讀者多多包涵。
本文僅限于個人學習,研究,交流,不得用于其他商業(yè)用途!”
翻譯:Understanding LTE with MATLAB——3.11節(jié)
3.11 系統(tǒng)對象接收
在這本書中,我們強調(diào)了通信系統(tǒng)工具箱的許多特性,特別是我們將介紹產(chǎn)品中使用的新系統(tǒng)對象。通過非常直觀的用戶界面,系統(tǒng)對象使得表達通信系統(tǒng)的任務(wù)更加容易,并且使得生成的MATLAB代碼更加可讀和可共享。系統(tǒng)對象可以用作Matlab程序和Simulink模型的一部分。它們是表示基于時間和可執(zhí)行算法的MATLAB對象,并且它們被組織為對象,以便于使用和實際上自我記錄。由于在本書的其余部分中我們依賴于System對象在MATLAB中表達LTE系統(tǒng)模型,因此本節(jié)將給出一個關(guān)于如何使用這些算法組件的簡短教程。在此,我們插入MATLAB安裝時需要安裝的組件內(nèi)容,如圖A所示:
圖A. 安裝MATLAB需要安裝的Toolbox
3.11.1 通信系統(tǒng)工具箱對象
通信系統(tǒng)工具箱的系統(tǒng)對象屬于通信(comm)包,它們的名稱以公共前綴“comm”開頭。為了訪問通信系統(tǒng)工具箱的所有系統(tǒng)對象,鍵入“comm”,然后在MATLAB命令后鍵入Tab鍵:
>>comm.<Tab>
這將產(chǎn)生工具箱中可用的所有系統(tǒng)對象的按字母順序排列的列表。在MATLAB的最新版本中,通信系統(tǒng)工具箱包含作為系統(tǒng)對象提供的總共123個算法。
讓我們選擇這些系統(tǒng)對象中的一個,例如COM.QPSK調(diào)制器,并創(chuàng)建這類調(diào)制器的一個實例。我們把這個實例稱為“調(diào)制器”。
>>Modulator = comm.QPSKModulator
將創(chuàng)建一個QPSK(Quadratue Phase Shift Keying)調(diào)制器,該對象的描述將出現(xiàn)在MATLAB工作區(qū)中,如圖3.1所示。
圖3.1.通過通信工具創(chuàng)建一個系統(tǒng)對象
每個系統(tǒng)對象都包含屬性和方法。其默認屬性在創(chuàng)建時出現(xiàn);此自文檔是系統(tǒng)對象的有用特性。通過查看給定系統(tǒng)對象的屬性列表,我們知道它可以采用哪些參數(shù),以及通常為它們分配哪些值。例如,QPSK調(diào)制器的相位偏移特性默認設(shè)置為
𝜋/4 。讓我們把這個參數(shù)變成 𝜋/2。修改屬性有兩種方法:
>> Modulator = comm.QPSKModulator('PhaseOffset',pi/2);
如果屬性被表示為一串字符,那么當我們想要設(shè)置一個特定的屬性時,會出現(xiàn)一個方便的可能值的列表。例如,當我們鍵入“Modulator.SymbolMapping=”后跟一個Tab時,映射選項列表似乎有助于將屬性設(shè)置為幾個選項中的任何一個,在本例中為“Binary”和“Gray”。
step 方法是系統(tǒng)對象執(zhí)行的主要方法。在創(chuàng)建和配置對象之后,可以傳遞一個輸入(或多個輸入),并且可以調(diào)用它的step方法來生成它的輸出(或多個輸出)。有兩個語法可用來執(zhí)行系統(tǒng)對象的STEP方法。我們可以:
使用“.”操作符來調(diào)用系統(tǒng)對象: y = Modulator.step(u);
使用step方法作為函數(shù),系統(tǒng)對象作為函數(shù)的變量:y = step(Modulator, u).
在圖3.2中,使用MATLAB randi函數(shù)創(chuàng)建10×1列位向量(變量u),然后作為輸入傳遞給Modulator System對象。通過調(diào)用它的step方法,基于指定的屬性使用QPSK算法創(chuàng)建表示調(diào)制比特的調(diào)制符號的5×1輸出向量(y)。
圖3.2.調(diào)用step方法執(zhí)行系統(tǒng)對象
現(xiàn)在我們已經(jīng)了解了如何訪問、創(chuàng)建、設(shè)置系統(tǒng)對象的屬性、配置和調(diào)用系統(tǒng)對象來執(zhí)行計算,接下來讓我們創(chuàng)建一個簡單的腳本,該腳本使用幾個系統(tǒng)對象來表達一個簡單的通信系統(tǒng)。
3.11.2 系統(tǒng)對象測試
下面是一個MATLAB腳本,或者稱為testbench,它使用系統(tǒng)對象對簡單的收發(fā)器系統(tǒng)進行BER分析。該收發(fā)器由QPSK調(diào)制器、加性高斯白噪聲(AWGN)信道和QPSK解調(diào)器組成。注意,此代碼使用了來自通信系統(tǒng)工具箱的四個系統(tǒng)對象:comm.QPSKModulator、comm.AWGNChannel、comm.QPSKDemodulator和comm.ErrorRate。
1%% Constants
2FRM = 2048;
3MaxNumErrs = 200;
4MaxNumBits = 1e7;
5EbNo_vector = 0:10;
6BER_vector = zeros(size(EbNo_vector));
7
8%% Initializations
9
10Modulator = comm.QPSKModulator('BitInput',true);
11AWGN = comm.AWGNChannel;
12DeModulator = comm.QPSKDemodulator('BitOutput',true);
13BitError = comm.ErrorRate;
14
15%% Outer Loop computing Bit-error rate as a function of EbNo
16
17for EbNo = EbNo_vector
18 snr = EbNo + 10*log10(2);
19 AWGN.EbNo = snr;
20 numErrs = 0;
21 numBits = 0;
22 results = zeros(3,1);
23 %% Inner loop modeling transmitter, chanel model and receiver for each EbNo
24 while((numErrs<MaxNumErrs)&&(numBits<MaxNumBits))
25 % Transmitter
26 u = randi([0,1],FRM,1);
27 mod_sig = step(Modulator,u);
28
29 % Channel
30 rx_sig = step(AWGN,mod_sig);
31
32 %Receiver
33 y = step(DeModulator,rx_sig);
34 results = step(BitError,u,y);
35 numErrs = results(2);
36 numBits = results(3);
37 end
38
39 % Compute BER
40
41 ber = results(1);
42 bits = results(3);
43
44 %% Clean up & collect results
45 reset(BitError);
46 BER_vector(EbNo+1) = ber;
47end
48
49%% Visualize results
50
51EbNoLin = 10.^(EbNo_vector/10);
52theoretical_results = 0.5*erfc(sqrt(EbNoLin));
53semilogy(EbNo_vector,BER_vector)
54grid;
55title('BER vs. EbNo - QPSK modulation');
56xlabel('Eb/No (dB)');
57ylabel('BER');
58hold;
59semilogy(EbNo_vector,theoretical_results,'dr');
60hold;
61legend('Simulation','Theoretical');
該腳本由四個部分組成。在初始化部分中,創(chuàng)建系統(tǒng)對象并設(shè)置一些參數(shù)。第二部分包含處理測試臺,該測試臺迭代Eb/N0值并計算相應的BER度量。第三部分是收發(fā)機處理循環(huán),其中調(diào)用系統(tǒng)對象的步驟方法來調(diào)制輸入信號,向調(diào)制信號中添加信道噪聲,并解調(diào)以產(chǎn)生接收信號和計算誤碼率。最后,在第四部分中,對仿真進行了清理和終止,并對BER性能結(jié)果進行了可視化。輸出結(jié)果如圖3.3所示。
圖3.3AWGN信道下QPSK調(diào)制的BER曲線仿真與理論結(jié)果對比
通過運行這個腳本,我們獲得了使用AWGN信道的QPSK調(diào)制系統(tǒng)的BER曲線。由AWGN信道處理的QPSK調(diào)制的理論BER結(jié)果為公式(3-1):
系統(tǒng)對象的使用產(chǎn)生了模塊化的、易于理解的MATLAB代碼,并形成了可以擴展為更復雜系統(tǒng)的結(jié)構(gòu)。我們將初始化,處理循環(huán),終止,可視化這四個步驟貫穿本書。改進MATLAB程序并使其更易讀的一種方法是將測試臺和可視化操作與算法和系統(tǒng)描述分開。接下來,我們將展示如何通過將收發(fā)器捕獲為MATLAB函數(shù)并將算法組件與測試臺腳本分離來實現(xiàn)這一點。
3.11.3 系統(tǒng)對象函數(shù)
MATLAB函數(shù) chap3_ex02_qpsk() 執(zhí)行我們的簡單QPSK收發(fā)器系統(tǒng)的算法部分。這個函數(shù)有三個輸入變量:
對于每個Eb/N0值,代碼在while循環(huán)中運行,直到觀察到指定的最大錯誤數(shù)量或處理最大位數(shù)為止。該代碼通過調(diào)用step方法來執(zhí)行每個系統(tǒng)對象。它計算兩個輸出:
1function [ ber,bits ] = chap3_ex02_qpsk( EbNo,maxNumErrs,maxNumBits )
2%% Initializations
3
4persistent Modulator AWGN DeModulator BitError
5
6if isempty(Modulator)
7 Modulator = comm.QPSKModulator('BitInput',true);
8 AWGN = comm.AWGNChannel;
9 DeModulator = comm.QPSKDemodulator('BitOutput',true);
10 BieError = comm.ErrorRate;
11end
12
13%% Constants
14FRM = 2048;
15M = 4;
16k = log2(M);
17snr = EbNo + 10*log10(k);
18AWGN.EbNo = snr;
19
20%% Processing loop modeling transmitter, channel model and receiver
21numErrs = 0;
22numBits = 0;
23results = zeros(3,1);
24while((numErrs<maxNumErrs)&&(numBits<maxNumBits))
25 % Transmitter
26 u = randi([0 1],FRM,1);
27 mod_sig = Modulator.step(u);
28
29 % Channel
30 rx_sig = AWGN.step(mod_sig);
31
32 % Receiver
33 demod = DeModulator.step(mod_sig);
34 y = demod(1:FRM);
35 results = BitError.step(u,y);
36 numErrs = results(2);
37 numBits = results(3);
38end
39
40%% Clean up & collect results
41ber = results(1);
42bits = results(3);
43reset(BitError);
44
45end
46
47
48}
為了避免每次調(diào)用函數(shù)時創(chuàng)建和釋放系統(tǒng)對象所涉及的開銷,函數(shù)中的系統(tǒng)對象由持久變量 persistent 表示。使用持久變量允許我們執(zhí)行諸如只在第一次調(diào)用函數(shù)時創(chuàng)建系統(tǒng)對象之類的操作。這增加了函數(shù)調(diào)用的效率,并提高了我們在循環(huán)中調(diào)用函數(shù)的模擬速度。
3.11.4 BER仿真
通信系統(tǒng)工具箱為BER工具提供了一個用于BER仿真性能的綜合測試臺。BERTool 是一個圖形應用程序,它計算一系列模擬的誤碼率,并將結(jié)果與已知的分析結(jié)果進行比較。
圖3.4. BERTool:BER結(jié)果可視化的測試平臺應用
圖3.15 BER仿真結(jié)果輸出
例如,為了可視化函數(shù)chap3_ex02_qpsk.m的模擬BER,如圖3.4所示,轉(zhuǎn)到Mote
Carlo選項卡,將文件指定為模擬MATLAB文件,并指定Eb/N0值和停止條件。BERTool將計算提供的Eb/N0值范圍內(nèi)的BER,并將自動顯示結(jié)果。這些模擬結(jié)果可以通過進入理論標簽并指定所使用的調(diào)制和編碼方案與理論結(jié)果進行比較。圖3.5顯示了BERTool仿真結(jié)果的輸出。
未完待續(xù)
2018/11/13