中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

寫寫Matlab的Turbo仿真實現吧

發布時間:2020-03-03 11:05:39 來源:網絡 閱讀:1466 作者:feifei884431 欄目:網絡安全

信道編碼作用就是針對無線傳輸環境下復雜多變的信道條件,采取的一種提高發送數據正確率的典型方法。比如對于傳輸的信息比特序列(例如x=[1 1 0 1 0 1 1 0]是一個長度為8的序列),如果直接經過無線信道,由于各種干擾的存在,接收到的序列y可能出現差錯變為了y=[1 1 0 1 1 1 1 0]。其中第五位出現了偏差由0變為了1產生錯誤。信道編碼的職責就是按照某種數學規律在發送數據之后添加一定的校驗位比特(例如c=[1 1 0 0])使得發送的數據變為信息比特x和校驗比特c的某種組合方式(例如最直接的就是級聯的方式s=[x c]=[1 1 0 1 0 1 1 0 1 1 0 0])。此時發送的數據變為s。此時經過無線信道,受干擾影響接收到的數據y'是y'=[1 1 0 1 1 1 1 0 1 1 0 0],不過由于比特流之間滿足特定的數學規律,可以糾正這一個錯誤,恢復出原始發送數據s=[1 1 0 1 0 1 1 0 1 1 0 0],進而提高了數據傳輸的可靠性。這種措施是針對信道條件的影響采取的編碼方式來提高傳輸可靠性【1】,信道編碼由此得名。

Turbo編碼屬于信道編碼的一種,而且是一種性能極好的方案。這個“好”在通信系統中具體體現在具有很好的傳輸可靠性以及可以接受的實現復雜度。(Bit Error Rate,BER)就是很好的可靠性衡量準則,比方我發送100個比特,其中錯了18個比特,那么此時的BER=18%。實現復雜度的問題也可以主觀感受一下,我設計一個特別復雜的編碼方案,接收端對收到的數據進行對應的復雜的操作,這雖然能帶來BER的提升,但是花費的開銷太大,實際應用中實用性不高。Turbo編碼的BER特性是現有所有信道編碼中數一數二的,又具有適度的實現復雜度,因此說Turbo是一種好碼。


寫著寫著就寫多了,這篇文章主要是寫一下Turbo的編譯碼思路以及Matlab的仿真實現(譯碼的話公式沒看懂)。

編碼器:

寫寫Matlab的Turbo仿真實現吧

            圖-1Turbo碼編碼器結構

    從圖中可以看出Turbo碼編碼器由兩個遞歸系統卷積碼編碼器(RSC)和一個交織器(Interleaver)以及一個打空器(Puncturer)組成。和普通的卷積碼編碼器不同的是,遞歸系統卷積碼編碼器有一個反饋支路,同時它有一輸出信號就是原始的輸入信息。RSC的具體的結構如圖-2所示。

寫寫Matlab的Turbo仿真實現吧

            圖-2RSC編碼器結構

沒有打孔的Turbo碼編碼器的碼率是1/3,實際中,常常采用變碼率的Turbo碼,這時就需要進行打孔操作,從圖-1中可以看出,打孔針對的是兩個RSC編碼器產生的校驗比特,原始的信息比特是不參加打孔操作的。

假設RSC編碼器的寄存器的個數為:m

輸入Turbo編碼器的信息記為:Infor

編碼的具體流程為:將輸入Turbo碼編碼器的信息(infor)m個尾比特(tail1)輸入進第一個RSC編碼器進行編碼,加m個尾比特的目的是將第一個RSC編碼器的最終狀態回歸到零狀態,輸出為parity1。將輸入Turbo碼編碼器的原始信息(infor)進行交織,將交織后的信息再加m個尾比特(tail2)輸入進第二個RSC編碼器進行編碼,加m個尾比特的目的是將第二個RSC編碼器的最終狀態回歸到零狀態,輸出為parity2parity1parity2的長度相等,都是輸入信息的長度加上m。假如想得到不同碼率的Turbo碼,可以對兩路校驗信息進行打孔,如不進行打孔操作,則Turbo碼編碼器的輸出即為:infor+tail1+tail2+parity1+parity2


譯碼器:

寫寫Matlab的Turbo仿真實現吧

            圖-3 Turbo碼譯碼器(MAP)

從圖-3中可以看出,Turbo碼譯碼器(MAP)由兩個MAP譯碼器和兩個交織器,一個解交織器組成。其中MAP Decoder 1MAP Decoder 2分別針對Turbo碼編碼器的RSC 1RSC2進行譯碼操作。由于輸入到第二個RSC編碼器的信息經過了交織的過程,因此,接收到的系統信息在輸入到MAP Decoder 2之前,先要進行交織的操作。解交織器和另一個交織器的功能類似,在此不再說明。

譯碼的流程從圖-3中可以很明顯的看出來:將原始信息,由第一個RSC編碼器產生的第一路校驗信息,第二個MAP譯碼器產生的相對于第一個MAP譯碼器而言的先驗信息(第一次初始化為零)經過解交織后聯合輸入進第一個MAP譯碼器進行譯碼進行譯碼;將第一個MAP譯碼器輸出的相對于第二個MAP譯碼器的先驗信息經過交織,原始的信息經過交織,第二路校驗信息聯合輸入進第二個MAP譯碼器進行譯碼,這時,第二個MAP譯碼器輸出的便是相對于第一個MAP譯碼器而言的先驗信息,完成了一次迭代。可以根據實際的需要,設定譯碼的迭代次數,一般情況下,隨著迭代次數的增加,譯碼器的性能會增加,但是,當迭代次數增加到一定的程度以后,譯碼器增加的性能就已經很小了,實際中,迭代次數一般選8

Turbo碼大體的編解碼思路就說這么多,具體的Matlab程序網上流行的一個WuYufei大神的版本,可以從這里獲得鏈接: http://pan.baidu.com/s/1jG1twhC 密碼: w9qe。


這里發現的問題是,Wu的程序是AWGN信道下BPSK調制方式的,調制階數比較低,從提高傳輸有效性的角度上需要高階調制(比如之前的BPSK調制,1就代表比特1,-1就代表比特0,高階的調制例如QPSK,s1代表00,s2代表01,s3代表10,s4代表11),這樣同樣傳輸s1~s4中的一個符號,就可以表示兩個比特的數據,速率提升了一倍,同樣帶來的結果是傳輸可靠性會有所下降(因為s1~s4之間的區分度不如1、-1之間的區分的好,即更容易互相混淆)但是在可容忍的可靠性下降范圍內采用QPSK調制確實提高了傳輸有效性。所以我需要做的就是在Wu的程序基礎上加入調制的步驟。

Turbo編碼不需要適配,假設產生了信息比特有100個,經過Turbo編碼(碼率1/3)那得到的數據比特為300,對這300個比特進行QPSK調制即可,調制完的符號經過AWGN信道疊加噪聲時需要注意噪聲功率,原本的噪聲幅度為sigma,那么加到QPSK符號上的噪聲幅度需要變為sigma/sqrt(2)。

Turbo譯碼器的輸入需要提供每一個比特的軟信息(符號置信度),所以經過AWGN信道的接收數據y,需要①先進行軟解調【2】處理,②將QPSK調制軟解調的符號級軟信息映射為比特級軟信息作為Turbo的輸入。

軟解調主要根據公式寫寫Matlab的Turbo仿真實現吧

實際應用中由于在高信噪比的條件下r被判決為s1~s4中某一個的可能性會很有壓倒性,另外的三種可能較小,所以導致LLR的計算過程中會出現NaN或Inf之類的結果。所以實際應用中采用更簡化的方案:寫寫Matlab的Turbo仿真實現吧采用這個方案不會出現上述NaN,Inf之類的問題。

附上我做的高階(QPSK)調制有/無Turbo編碼的BER-SNR曲線~

寫寫Matlab的Turbo仿真實現吧

總結一下的話,主要就是介紹了Turbo編碼的思想以及應用于高階調制的Matlab仿真需要注意的問題。


【1】通信系統主要是解決三個問題:可靠性、有效性、安全性。其中可靠性和有效性是一種矛盾關系,一方面希望我發送一點兒消息(比如一個數字1,接收端可以理解出大量的信息(比如a“我愛北京天安門,天安門上太陽升”);另一方面我又希望我發送的數據可以被接收方正確的理解(即a就是代表那句歌詞)。顯然消息蘊含的信息時有限的(比如數字1如果規定代表歌詞的話,那么真的需要傳輸數字“1”的信息的時候需要找別的信息來代替)而且傳輸過程中會發生損失(比如發送數字1,卻接受到了數字7,那么收端肯定無法正確理解發端的意思)這對于傳輸可靠性來說是一個消極因素。這時需要發端進行適當的操作來提高發送數據的準確性,即如前文所述的信道編碼,與信道編碼類似的提高可靠性的操作會引起信息的冗余,這對于傳輸有效性來說是一個消極因素。因而通信系統需要在有效性和可靠性之間取得適當的折中。第三個安全性就顧名思義了,我希望我傳輸的數據只有我和接受的人收到,其他的人收到也是無用的信息,這涉及到一些抗干擾相關的技術,小編研究不深。

【2】軟解調,相對應的就有硬解調。

先說硬解調,還記得我們為了提高傳輸有效性在每次發送信息的時候發的是s1~s4之中的一個嘛,現在假設s1=-1-1i,s2=-1+1i,s3=1-1i,s4=1+1i。那s1~s4可以畫成如下的星座圖。

寫寫Matlab的Turbo仿真實現吧

經過無線信道的各種干擾影響之后,接收到信號r可能位于這個位置,如下圖

寫寫Matlab的Turbo仿真實現吧

那么究竟應該將接收信號r判別成s1~s4中哪一種呢?硬解調給出的方案就是計算一下r到s1~s4之間的各個距離d1~d4,取距離最近的那一個作為判決結果。這么做是有原因的,因為影響因素服從0均值的高斯分布,所以噪聲影響從s1(-1,-1i)的位置變到了r所在的位置的概率畢竟是小的,所以優先判決為距離更近的點。這么做比較簡單,但是給人一種生硬的感覺,突出一個“強行”,硬判決由此得名。經過應判決我們得知的只有被判決成的符號是s1~s4中的哪一個,并不知道r究竟與判決結果的偏移程度有多大,這是一部分信息損失,我們希望能補償回來。

再說一下軟解調,軟解調在判決的時候,并不是生硬的給出r判決為s1~s4的哪一個,而是給出發送s1~s4,收端收到r的這四種情況各自發生的概率p(r|s1)~p(r|s4)(這個概率又稱為軟信息)。殘忍的判決工作軟解調并不做,只是把各種概率作為輸出,這樣的話硬解調損失的r與判決結果的偏移/相似程度就得意保留,沒有信息損失。而這個軟信息正好可以天然的用于類似于Turbo譯碼器這種需要軟信息的譯碼操作。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

务川| 沾化县| 宜昌市| 昔阳县| 普宁市| 固阳县| 象山县| 宝山区| 穆棱市| 肇东市| 澎湖县| 高邑县| 德昌县| 三穗县| 墨竹工卡县| 宁安市| 巧家县| 兰溪市| 北碚区| 西峡县| 江油市| 永安市| 伽师县| 上高县| 敦煌市| 宣恩县| 临湘市| 犍为县| 甘孜县| 泰来县| 五大连池市| 丹江口市| 乡城县| 自治县| 将乐县| 颍上县| 安图县| 保定市| 山东| 韩城市| 福鼎市|