QPSK調(diào)制解調(diào)的仿真_第1頁
QPSK調(diào)制解調(diào)的仿真_第2頁
QPSK調(diào)制解調(diào)的仿真_第3頁
QPSK調(diào)制解調(diào)的仿真_第4頁
QPSK調(diào)制解調(diào)的仿真_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

/引言近年來,軟件無線電作為解決通信體制兼容性問題的重要方法受到各方面的注意。它的中心思想是在通用的硬件平臺上,用軟件來實現(xiàn)各種功能,包括調(diào)制解調(diào)類型、數(shù)據(jù)格式、通信協(xié)議等。通過軟件的增加、修改或升級就可以實現(xiàn)新的功能,充分體現(xiàn)了體制的靈活性、可擴展性等。其中軟件的增加、高頻譜效率的調(diào)制解調(diào)模塊是移動通信系統(tǒng)的關鍵技術,它的軟件化也是實現(xiàn)軟件無線電的重要環(huán)節(jié)。QPSK是英文QuadraturePhaseShiftKeying的縮略語簡稱,意為正交相移鍵控,是一種數(shù)字調(diào)制方式。在19世紀80年代初期,人們選用恒定包絡數(shù)字調(diào)制。這類數(shù)字調(diào)制技術的優(yōu)點是已調(diào)信號具有相對窄的功率譜和對放大設備沒有線性要求,不足之處是其頻譜利用率低于線性調(diào)制技術。19世紀80年代中期以后,四相絕對移相鍵控(QPSK)技術以其抗干擾性能強、誤碼性能好、頻譜利用率高等優(yōu)點,廣泛應用于數(shù)字微波通信系統(tǒng)、數(shù)字衛(wèi)星通信系統(tǒng)、寬帶接入、移動通信與有線電視系統(tǒng)之中。通過完成設計內(nèi)容,復習QPSK調(diào)制解調(diào)的基本原理,同時也要復習通信系統(tǒng)的主要組成部分,了解調(diào)制解調(diào)方式中最基礎的方法。了解QPSK的實現(xiàn)方法與數(shù)學原理。并對“通信”這個概念有個整體的理解,學習數(shù)字調(diào)制中誤碼率測試的標準與計算方法。同時還要復習隨機信號中時域用自相關函數(shù),頻域用功率譜密度來描述平穩(wěn)隨機過程的特性等基礎知識,來理解高斯信道中噪聲的表示方法,以便在編程中使用。理解QPSK調(diào)制解調(diào)的基本原理,并使用MATLAB編程實現(xiàn)QPSK信號在高斯信道和瑞利衰落信道下傳輸,以與該方式的誤碼率測試。復習MATLAB編程的基礎知識和編程的常用算法以與使用MATLAB仿真系統(tǒng)的注意事項,并鍛煉自己的編程能力,通過編程完成QPSK調(diào)制解調(diào)系統(tǒng)的仿真,以與誤碼率測試,并得出響應波形。在完成要求任務的條件下,嘗試優(yōu)化程序。本課設是基于Matlab的軟件仿真,只需PC機上安裝MATLAB6.0或者以上版本即可。課設的要求是1.構建一個理想信道基本QPSK仿真系統(tǒng),要求仿真結果有:基帶輸入波形與其功率譜;QPSK信號與其功率譜;QPSK信號星座圖。2.構建一個在AWGN(高斯白噪聲)信道條件下的QPSK仿真系統(tǒng),得出高斯白噪聲信道條件下的誤碼性能以與高斯白噪聲的理論曲線,要求所有誤碼性能曲線在同一坐標比例下繪制。通過本次實驗,除了和隊友培養(yǎng)了默契學到了知識之外,還可以將次實驗作為一種推廣,讓更多的學生來深入一層的了解QPSK以至其他調(diào)制方式的原理和實現(xiàn)方法。可以方便學生進行測試和對比。足不出戶便可以做實驗。1方案論證本次課設是基于MATLAB環(huán)境下對QPSK調(diào)制解調(diào)系統(tǒng)進行仿真。在Matlab環(huán)境下有兩種仿真方案,一種是基于simulink對QPSK進行模塊化的仿真,要求是不能直接調(diào)用軟件里面的集成模塊,以此來實現(xiàn)QPSK系統(tǒng)的仿真。另一種方案是在Matlab環(huán)境下,用軟件編程的方法來實現(xiàn)調(diào)制解調(diào)系統(tǒng)的仿真,并且得出不同信道的誤碼率,并作以比較。1.1方案一在Matlab環(huán)境下,用軟件編程的方法來實現(xiàn)QPSK調(diào)制解調(diào)系統(tǒng)的仿真。Matlab是一款由美國MathWorks公司出品的商業(yè)數(shù)學軟件。MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以與數(shù)值計算的高級技術計算語言和交互式環(huán)境。除了矩陣運算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB還可以用來創(chuàng)建用戶界面與與調(diào)用其它語言(包括C,C++和FORTRAN)編寫的程序。我們此次可以應用它的這種功能,在熟練掌握語言編程以與深刻理解QPSK的基礎上,嚴格按照程序仿真的流程圖對各部分進行程序編寫并仿真。應用理論知識來驗證最終的仿真結果是否正確。1.2方案二在Matlab環(huán)境下的Simulink模塊庫中應用模塊來搭建QPSK調(diào)制解調(diào)系統(tǒng)的仿真電路模塊。在深入了解QPSK調(diào)制解調(diào)系統(tǒng)理論知識的情況下,根據(jù)理論知識構建調(diào)制解調(diào)的系統(tǒng)框圖。在此基礎上選擇合適的電路器件以與設置合理的參數(shù),構成調(diào)制解調(diào)的總體電路框圖。Simulink是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境。在該環(huán)境中只要通過簡單的鼠標操作,就可以構造出復雜的系統(tǒng)。Simulink提供了一個建立模型方塊圖的圖形用戶接口,這個創(chuàng)建過程只需單擊和拖動鼠標操作就能完成,它提供了一種更快捷、直接明了的方式,而且用戶可以立即看到系統(tǒng)的仿真結果。在此基礎上完成電路圖的搭建,得出仿真結果,并與實際的理論結果相比較。1.3方案確立在經(jīng)過詳細的考慮和比較之后,我確立了方案一為本次課程設計的最終方案。QPSK的調(diào)制方法有兩種,分別是相乘電路法和選擇法,結合本次設計的實際情況,最終選擇用程序方式實現(xiàn)相乘電路的調(diào)制方式。因為在Matlab中應用程序?qū)PSK調(diào)制解調(diào)系統(tǒng)進行仿真,一方面降低了系統(tǒng)設計的復雜性,并且有效的克服了電子瓶頸的問題。因為在電子電路中,總體電路對參數(shù)設置是非常敏感的,一旦參數(shù)設置出現(xiàn)小的偏差,將會影響到整個電路的結果。另一方面程序的仿真過程中可以將主程序分為很多個子程序,將它們逐個進行仿真,這樣不會影響到整體結果,可以逐步進行調(diào)試。結合以上的比較論證以與自身的能力,最終我決定用程序法來完成此次對QPSK調(diào)制解調(diào)系統(tǒng)的仿真。2仿真原理四相相位調(diào)制解調(diào)是利用載波的四種不同相位差來表征輸入的數(shù)字信息,是四進制移相鍵控。QPSK是在M=4時的調(diào)相技術,它規(guī)定了四種載波相位,分別為45°,135°,225°,275°,調(diào)制器輸入的數(shù)據(jù)是二進制數(shù)字序列,為了能和四進制的載波相位配合起來,則需要把二進制數(shù)據(jù)變換為四進制數(shù)據(jù),這就是說需要把二進制數(shù)字序列中每兩個比特分成一組,共有四種組合,即00,01,10,11,其中每一組稱為雙比特碼元。每一個雙比特碼元是由兩位二進制信息比特組成,它們分別代表四進制四個符號中的一個符號。QPSK中每次調(diào)制可傳輸2個信息比特,這些信息比特是通過載波的四種相位來傳遞的。解調(diào)器根據(jù)星座圖與接收到的載波信號的相位來判斷發(fā)送端發(fā)送的信息比特。數(shù)字調(diào)制用“星座圖”來描述,星座圖中定義了一種調(diào)制技術的兩個基本參數(shù):(1)信號分布;(2)與調(diào)制數(shù)字比特之間的映射關系。星座圖中規(guī)定了星座點與傳輸比特間的對應關系,這種關系稱為“映射”,一種調(diào)制技術的特性可由信號分布和映射完全定義,即可由星座圖來完全定義[3]。在QPSK調(diào)制中,QPSK信號可以看作兩個載波正交的2PSK調(diào)制器構成。串/并變換器將輸入的二進制序列分為速率減半的兩個并行的雙極性序列,然后分別對sinωct和cosωct調(diào)制,相加后得到QPSK調(diào)制信號。QPSK同相支路和正交支路可分別采用相干解調(diào)方式解調(diào),得到I(t)和Q(t)。經(jīng)抽樣判決和并/串變換器,將上、下支路得到的并行數(shù)據(jù)恢復成串行數(shù)據(jù)。2.1QPSK調(diào)制原理在QPSK調(diào)制中,QPSK信號可以看作兩個載波正交的2PSK調(diào)制器構成。串/并變換器將輸入的二進制序列分為速率減半的兩個并行的雙極性序列,然后分別對sinωct和cosωct調(diào)制,相加后得到QPSK調(diào)制信號。QPSK同相支路和正交支路可分別采用相干解調(diào)方式解調(diào),得到I(t)和Q(t)。經(jīng)抽樣判決和并/串變換器,將上、下支路得到的并行數(shù)據(jù)恢復成串行數(shù)據(jù)。調(diào)制原理框圖如圖2.1所示圖2.1QPSK調(diào)制原理框圖原理分析:基本原理與系統(tǒng)結構QPSK與二進制PSK一樣,傳輸信號包含的信息都存在于相位中。的別的載波相位取四個等間隔值之一,如л/4,3л/4,5л/4,和7л/4。相應的,可將發(fā)射信號定義為0≤t≤TSi(t)=0(2.1.1)其中,i=1,2,2,4;E為發(fā)射信號的每個符號的能量,T為符號持續(xù)時間,載波頻率f等于nc/T,nc為固定整數(shù)。每一個可能的相位值對應于一個特定的二位組。例如,可用前述的一組相位值來表示格雷碼的一組二位組:10,00,01,11。下面介紹QPSK信號的產(chǎn)生和檢測。如果a為典型的QPSK發(fā)射機框圖。輸入的二進制數(shù)據(jù)序列首先被不歸零(NRZ)電平編碼轉(zhuǎn)換器轉(zhuǎn)換為極性形式,即負號1和0分別用和-表示。接著,該二進制波形被分接器分成兩個分別由輸入序列的奇數(shù)位偶數(shù)位組成的彼此獨立的二進制波形,這兩個二進制波形分別用a1(t),和a2(t)表示。容易注意到,在任何一信號時間間隔內(nèi)a1(t),和a2(t)的幅度恰好分別等于Si1和Si2,即由發(fā)送的二位組決定。這兩個二進制波形a1(t),和a2(t)被用來調(diào)制一對正交載波或者說正交基本函數(shù):1(t)=,2(t)=。這樣就得到一對二進制PSK信號。1(t)和2(t)的正交性使這兩個信號可以被獨立地檢測。最后,將這兩個二進制PSK信號相加,從而得期望的QPSK。2.2QPSK解調(diào)原理在QPSK解調(diào)中,正交支路和同相支路分別設置兩個相關器(或匹配濾波器),得到I(t)和Q(t),經(jīng)電平判決和并/串變換后即可恢復原始信息從發(fā)射機發(fā)射的已調(diào)信號經(jīng)過傳輸媒質(zhì)傳播到接收端,接收機接收到的己調(diào)信號為:SQPSK(t)=I(t)cosωct+Q(t)sinωct(2.2.I(t)、Q(t)分別為同相和正交支路,ωc為載波頻率,那么相干解調(diào)后,同相支路相乘可得:Ii(t)=SQPSK(t)cosωct=[I(t)cosωct+Q(t)sinωct]cosωct=I(t)cos2wct+Q(t)sinwct/2=I(t)/2-I(t)cos2ωct+Q(t)sin2ωct(2.2.2)Qq(t)=SQPSK(t)sinωct=[I(t)cosωct+Q(t)sinωct]sinωct=I(t)sinωct×cosωct+Q(t)sin2ωct=I(t)sin2ωct/2+Q(t)-Q(t)cos2ωct(2.2.3經(jīng)過低通濾波器可得:Ii(t)=0.5I(t),Qq(t)=0.5Q(t)(2.2.4原理框圖如圖2.2所示:1(t)同相信道門限=0發(fā)送二進制序列的估計判決門限低通filrer發(fā)送二進制序列的估計判決門限低通filrer判決門限復接器接收信號x(t)低通filrer2(t)正交信道門限=0 圖2.2QPSK解調(diào)原理框圖原理分析:QPSK接收機由一對共輸入地相關器組成。這兩個相關器分別提供本地產(chǎn)生地相干參考信號1(t)和2(t)。相關器接收信號x(t),相關器輸出地x1和x2被用來與門限值0進行比較。如果x1>0,則判決同相信道地輸出為符號1;如果x1<0,則判決同相信道的輸出為符號0。;類似地。如果正交通道也是如此判決輸出。最后同相信道和正交信道輸出這兩個二進制數(shù)據(jù)序列被復加器合并,重新得到原始的二進制序列。在AWGN信道中,判決結果具有最小的負號差錯概率。2.3調(diào)制解調(diào)系統(tǒng)總框圖圖2.3QPSK調(diào)制與解調(diào)系統(tǒng)總框圖3仿真與分析3.1程序仿真流程圖程序仿真流程圖是程序仿真的步驟與大體框架,基于流程圖,我們可以有效的避免程序次序的先后問題,將主程序分割成很多個子程序來逐一實現(xiàn),嚴格按照流程圖的次序進行編程仿真。最終將各個子程序綜合起來實現(xiàn)最終的程序仿真。流程圖如圖3.1所示圖3.1程序仿真流程圖3.2QPSK調(diào)制方式的Matlab仿真I路信號是用余弦載波,由2進制數(shù)據(jù)流的奇數(shù)序列組成;Q路信號用正弦載波,由2進制數(shù)據(jù)流的偶數(shù)序列組成。下面的a是Idata,b就是Qdata,它們分布與各自的載波相乘分別輸出I路信號和Q路信號。I路信號加上Q路信號就是QPSK輸出信號。當I路載波信號是0相位時為1,是180°相位時為0;當Q路載波信號是0相位時為1,是180°相位時為0。調(diào)制仿真圖如圖3.2所示:圖3.2matlab調(diào)制仿真圖3.3QPSK解調(diào)方式Matlab仿真正交支路和同相支路分別設置兩個相關器(或匹配濾波器),得到I(t)和Q(t),經(jīng)電平判決和并/串變換后即可恢復原始信息。I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1);%解調(diào)(相干解調(diào),與載波相乘)Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);I_recover=conv(I_demo,xrc);%低通濾波Q_recover=conv(Q_demo,xrc);圖3.3matlab解調(diào)仿真圖根據(jù)圖2.1和圖2.2的流程框圖設計仿真程序,得出結果并且分析如下:3.4理想信道下的仿真仿真結果出現(xiàn)的波形依次是基帶信號,基帶信號的功率譜密度,調(diào)制信號,調(diào)制信號的功率譜密度,解調(diào)輸出,解調(diào)輸出功率譜密度。實驗結果如圖3.4所示圖3.4理想信道下的QPSK仿真結果 圖3.4結果顯示,完成了QPSK信號在理想信道上的調(diào)制,傳輸,解調(diào)的過程,由于調(diào)制過程中加進了載波,因此調(diào)制信號的功率譜密度會發(fā)生變化。并且可以看出調(diào)制解調(diào)的結果沒有誤碼。3.5高斯信道下的仿真在高斯信道下的仿真結果出現(xiàn)的波形依次是調(diào)制信號,調(diào)制信號功率譜密度,高斯噪聲曲線,QPSK信號星座圖(Awgn)。結果如圖3.4所示: 圖3.5高斯信道下的QPSK仿真結果 由圖3.5可以得到高斯信道下的調(diào)制信號,高斯噪聲,調(diào)制輸出功率譜密度曲線和QPSK信號的星座圖。 在高斯噪聲的影響下,調(diào)制信號的波形發(fā)生了明顯的變化,其功率譜密度函數(shù)相對于圖3.4中的調(diào)制信號的功率譜密度只發(fā)生了微小的變化,原因在于高斯噪聲是一個均值為0的白噪聲,在各個頻率上其功率是均勻的,因此此結果是真確的。星座圖反映可接收信號早高斯噪聲的影響下發(fā)生了誤碼,但是大部分還是保持了原來的特性。3.6先通過瑞利衰落信道再通過高斯信道的仿真信號先通過瑞麗衰落信道再通過高斯信道的仿真后出現(xiàn)的波形依次是調(diào)制信號(Ray+Awgn),調(diào)試信號功率譜密度(Ray),QPSK信號星座圖(Awgn+Ray),誤碼率曲線。仿真結果如圖3.6所示: 圖3.6先通過瑞利衰落信道再通過高斯信道的仿真結果 由圖3.6可以得到瑞利衰落信道前后的星座圖,調(diào)制信號的曲線圖與其功率譜密度。最后顯示的是高斯信道和瑞利衰落信道的誤碼率對比。由圖可知瑞利衰落信道下的誤碼率比高斯信道下的誤碼率高。至此,仿真實驗就全部完成。4結束語本次試驗是基于matlab環(huán)境下的QPSK調(diào)制解調(diào)系統(tǒng)的仿真。由此次仿真實驗可知,由于高斯信道和瑞利信道的影響,波形發(fā)生了明顯的變化,功率譜密度也發(fā)生變化,星座圖可反映在噪聲影響下產(chǎn)生的誤碼。從仿真解調(diào)前與調(diào)制后的圖對比可知仿真正確。通過圖3.3可知瑞利信道下的誤碼率和誤比特率明顯高于高斯信道,并與理論值基本符合。隨著通信事業(yè)的發(fā)展,通信系統(tǒng)的設計也會越來越復雜,通過計算機的仿真,可以大大地降低通信過程實驗成本。本文設計出一個QPSK仿真模型,以衡量QPSK在理想信道,高斯白噪聲信道,以與先通過瑞利再通過高斯信道的性能,通過仿真,可以更好地了解QPSK系統(tǒng)的工作原理,而且為硬件的研制提供一定的參考作用。這次的通信專業(yè)方向設計讓我把通信原理的一些內(nèi)容又重新復習了一遍,中間出了很多問題,比如用matlab7.0版本就不能把幾個圖整合到一起,也就是不能使用subplot函數(shù),會出現(xiàn)Undefinedfunctionorvariable"hanalysisparammenu"的錯誤.而我后來又換成了matlab7.8就可以實現(xiàn)該功能。我把程序發(fā)給老師后老師細心的幫我進行了排錯,我錯誤的以為依靠高版本的優(yōu)化功能把在低版本不能實現(xiàn)的功能強制執(zhí)行,所以我還有很多地方需要學習,包括對誤碼率進行計算的兩個函數(shù)我也是借鑒的網(wǎng)上的程序。這次方向設計讓我學會了很多,也認識到了自己還有很多方面的欠缺,希望在今后的學習和工作中好好努力,盡快的彌補自己的不足。致謝一個月的課程設計很快就過去了,在這期間我學習和掌握了使用MATLAB的工具箱simulink對數(shù)字通信系統(tǒng)的仿真。回想起這期間的經(jīng)歷,感慨萬千。課程設計是對大學四年所學的知識的一次總結、一次檢驗。同時也是鍛煉和進一步提高自己自學能力的一次寶貴機會。在做本次設計的初期階段,由于自己在很的多知識點上有所遺忘,因此設計的進度相當緩慢,特別是在原理分析和simulink仿真上更是裹足不前。我重點復習并新學習了相關章節(jié)的知識,并很快理解了要點,進度由此快速展開。設計后期階段,在設計思路上卡了殼。此時,查閱了很多資料并多次請教老師,使我得以進行軟件調(diào)試從而驗證了設計的正確可行性并按時完成設計,在此特別感謝魏瑞老師的指導,此外還要感謝學校教研室給我們這次寶貴而難得的機會,也感謝幫助和支持我的同學。在此表示衷心的感謝!。由于理論知識有限、文中難免出現(xiàn)不足之處,敬請各位老師批評指正。參考文獻[1]張志勇等.《精通matlab6.5》[J].北京:北京航空航天大學出版社,2003.3.

[2]JohnG.ProakisMasoudSalehiGerhardBauch.著劉樹棠譯comtemporarycommunicationsystemsusingmatlabandsimulink.北京:電子工業(yè)出版社,2005.4.

[3]樊昌信,張甫詡、徐炳祥、吳成柯.《通信原理》[M].北京:國防工業(yè)出版社,2001.5.[4]王立寧,樂光新,詹菲等.《MATLAB與通信仿真》[M].北京:人民郵電出版社,1999[5]陳懷琛,吳大正,高西金《matlab與在信息課程中的應用》[J]北京:電子工業(yè)出版社,2006[6]樓天順、劉曉東、李博涵《基于matlab7.x的系統(tǒng)分析與設計》[M].西安:西安電子科技大學出版社,2005.5[7]張肅文主編.《高頻電子線路》[M].北京:高等教育出版社,2004.11[8]程佩青編著.《數(shù)字信號處理教程》[M].北京:清華大學出版社,2006.3[9]張輝、曹麗娜、王勇編著.《通信原理輔導》[M]西安.西安電子科技大學出版社,2004.11[10]徐明遠.《MATLAB仿真在通信工程中的應用》[J].西安.西安電子科技大學出版社,2005.6[11]田麗華等.《編碼理論》[J].西安西安電子科技大學出版社,2003.8附錄%主文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%題目:基于matlab環(huán)境下的QPSK仿真%%%%%%%作者:楊遇春%%%%%%%完成日期:2015-01-14%%%%%%%郵箱:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;%%%%%%%%%%%%%%%%%%%%%%%%初始化參數(shù)%%%%%%%%%%%%%%%%%%%%%T=1;%基帶信號寬度,也就是頻率fc=10/T;%載波頻率ml=2;%調(diào)制信號類型的一個標志位(選取2的原因見23行)nb=100;%傳輸?shù)谋忍財?shù)delta_T=T/200;%采樣間隔fs=1/delta_T;%采樣頻率SNR=0;%信噪比t=0:delta_T:nb*T-delta_T;%限定t的取值范圍N=length(t);%采樣數(shù)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%調(diào)制部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基帶信號的產(chǎn)生data=randn(1,nb)>0.5;%調(diào)用一個隨機函數(shù)(0or1),輸出到一個1*100的矩陣datanrz=data.*2-1;%變成極性碼data1=zeros(1,nb/delta_T);%創(chuàng)建一個1*nb/delta_T的零矩陣forq=1:nbdata1((q-1)/delta_T+1:q/delta_T)=datanrz(q);%將極性碼變成對應的波形信號end%將基帶信號變換成對應波形信號data0=zeros(1,nb/delta_T);%創(chuàng)建一個1*nb/delta_T的零矩陣forq=1:nbdata0((q-1)/delta_T+1:q/delta_T)=data(q);%將極性碼變成對應的波形信號end%發(fā)射的信號data2=abs(fft(data1));%串并轉(zhuǎn)換,將奇偶位數(shù)據(jù)分開idata=datanrz(1:ml:(nb-1));%將奇偶位分開,因此間隔m1為2qdata=datanrz(2:ml:nb);%QPSK信號的調(diào)制ich=zeros(1,nb/delta_T/2);%創(chuàng)建一個1*nb/delta_T/2的零矩陣,以便后面存放奇偶位數(shù)據(jù)fori=1:nb/2ich((i-1)/delta_T+1:i/delta_T)=idata(i);endforii=1:N/2a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii));endidata1=ich.*a;%奇數(shù)位數(shù)據(jù)與余弦函數(shù)相乘,得到一路的調(diào)制信號qch=zeros(1,nb/2/delta_T);forj1=1:nb/2qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1);endforjj=1:N/2b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj));endqdata1=qch.*b;%偶數(shù)位數(shù)據(jù)與余弦函數(shù)相乘,得到另一路的調(diào)制信號s=idata1+qdata1;%將奇偶位數(shù)據(jù)合并,s即為QPSK調(diào)制信號ss=abs(fft(s));%快速傅里葉變換得到頻譜%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%瑞利衰落信道和高斯信道%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%瑞利衰落信道ray_ich=raylrnd(0.8,1,nb/2/delta_T);ray_qch=raylrnd(0.8,1,nb/2/delta_T);Ray_idata=idata1.*ray_ich;Ray_qdata=qdata1.*ray_qch;Ray_s=Ray_idata+Ray_qdata;%%%%%%%%%%%%%%%%%%%%%%%%%%%高斯信道s1=awgn(s,SNR);%通過高斯信道之后的信號s11=abs(fft(s1));%快速傅里葉變換得到頻譜s111=s1-s;%高斯噪聲曲線%%%%%%%%%%%%%%%%%%%%%%%%%%Awgn_s=awgn(Ray_s,SNR);%通過高斯信道再通過瑞利衰落信道%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK解調(diào)部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解調(diào)部分(高斯信道)idata2=s1.*a;%這里面其實隱藏了一個串并轉(zhuǎn)換的過程qdata2=s1.*b;%對應的信號與正余弦信號相乘idata3=zeros(1,nb/2);%建立1*nb數(shù)組,以存放解調(diào)之后的信號qdata3=zeros(1,nb/2);%抽樣判決的過程,與0作比較,data>=0,則置1,否則置0forn=1:nb/2%A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T));ifsum(idata2((n-1)/delta_T+1:n/delta_T))>=0idata3(n)=1;elseidata3(n)=0;end%A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T));ifsum(qdata2((n-1)/delta_T+1:n/delta_T))>=0qdata3(n)=1;elseqdata3(n)=0;endend%為了顯示星座圖,將信號進行處理idata4=zeros(1,nb/2);qdata4=zeros(1,nb/2);forn=1:nb/2Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T;ifAwgn_ichsum(n)>=0idata4(n)=1;elseidata4(n)=0;endAwgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T;ifAwgn_qchsum(n)>=0qdata4(n)=1;elseqdata4(n)=0;endend%將判決之后的數(shù)據(jù)存放進數(shù)組demodata=zeros(1,nb);demodata(1:ml:(nb-1))=idata3;%存放奇數(shù)位demodata(2:ml:nb)=qdata3;%存放偶數(shù)位%為了顯示,將它變成波形信號(即傳輸一個1代表單位寬度的高電平)demodata1=zeros(1,nb/delta_T);%創(chuàng)建一個1*nb/delta_T的零矩陣forq=1:nbdemodata1((q-1)/delta_T+1:q/delta_T)=demodata(q);%將極性碼變成對應的波形信號end%累計誤碼數(shù)%abs(demodata-data)求接收端和發(fā)射端%數(shù)據(jù)差的絕對值,累計之后就是誤碼個數(shù)Awgn_num_BER=sum(abs(demodata-data))%%%%%%%%%%%%%%%%%%%%解調(diào)部分(瑞利+高斯)Ray_idata2=Ray_s.*a;%這里面其實隱藏了一個串并轉(zhuǎn)換的過程Ray_qdata2=Ray_s.*b;%對應的信號與正余弦信號相乘%Ray_idata3=zeros(1,nb/2);%建立1*nb數(shù)組,以存放解調(diào)之后的信號%Ray_qdata3=zeros(1,nb/2);%抽樣判決的過程,與0作比較,data>=0,則置1,否則置0%forn=1:nb/2%ifRay_sum(Ray_idata2((n-1)/delta_T+1:n/delta_T))>=0%Ray_idata3(n)=1;%elseRay_idata3(n)=0;%end%ifRay_sum(Ray_qdata2((n-1)/delta_T+1:n/delta_T))>=0%Ray_qdata3(n)=1;%elseRay_qdata3(n)=0;%end%end%為了顯示星座圖,將信號進行處理Ray_idata4=zeros(1,nb/2);Ray_qdata4=zeros(1,nb/2);forn=1:nb/2Ray_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T;ifRay_ichsum(n)>=0Ray_idata4(n)=1;elseRay_idata4(n)=0;endRay_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T;ifRay_qchsum(n)>=0Ray_qdata4(n)=1;elseRay_qdata4(n)=0;endend%將判決之后的數(shù)據(jù)存放進數(shù)組Ray_demodata=zeros(1,nb);Ray_demodata(1:ml:(nb-1))=Ray_idata4;%存放奇數(shù)位Ray_demodata(2:ml:nb)=Ray_qdata4;%存放偶數(shù)位%為了顯示,將它變成波形信號(即傳輸一個1代表單位寬度的高電平)Ray_demodata1=zeros(1,nb/delta_T);%創(chuàng)建一個1*nb/delta_T的零矩陣forq=1:nbRay_demodata1((q-1)/delta_T+1:q/delta_T)=Ray_demodata(q);%將極性碼變成對應的波形信號end%累計誤碼數(shù)%abs(demodata-data)求接收端和發(fā)射端%數(shù)據(jù)差的絕對值,累計之后就是誤碼個數(shù)Ray_num_BER=sum(abs(Ray_demodata-data))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%誤碼率計算%%調(diào)用了cm_sm32();和cm_sm33()函數(shù)%%聲明:函數(shù)聲明在另外倆個M文件中%%作用:cm_sm32()用于瑞利信道誤碼率的計算%%cm_sm33()用于高斯信道誤碼率的計算%%ecohon/off作用在于決定是否顯示指令內(nèi)容%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SNRindB1=0:1:6;SNRindB2=0:0.1:6;%瑞利衰落信道fori=1:length(SNRindB1),[pb,ps]=cm_sm32(SNRindB1(i));%比特誤碼率smld_bit_ray_err_prb(i)=pb;smld_symbol_ray_err_prb(i)=ps;disp([ps,pb]);echooff;end;%高斯信道echoon;fori=1:length(SNRindB1),[pb1,ps1]=cm_sm33(SNRindB1(i));smld_bit_awgn_err_prb(i)=pb1;smld_symbol_awgn_err_prb(i)=ps1;disp([ps1,pb1]);echooff;end;%理論曲線echoon;fori=1:length(SNRindB2),SNR=exp(SNRindB2(i)*log(10)/10);%信噪比theo_err_awgn_prb(i)=0.5*erfc(sqrt(SNR));%高斯噪聲理論誤碼率theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/SNR));%瑞利衰落信道理論誤碼率echooff;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%h=spectrum.welch;%類似于C語言的宏定義,方便以下的調(diào)用%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%輸出顯示部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%第一部分(理想)figure(1)subplot(3,2,1);plot(data0),title('基帶信號');axis([020000-22]);subplot(3,2,2);psd(h,data1,'fs',fs),title('基帶信號功率譜密度');subplot(3,2,3);plot(s),title('調(diào)制信號');axis([0500-33]);subplot(3,2,4);psd(h,s,'fs',fs),title('調(diào)制信號功率譜密度');subplot(3,2,5);plot(demodata1),title('解調(diào)輸出');axis([020000-22]);subplot(3,2,6);psd(h,demodata1,'fs',fs),title('解調(diào)輸出功率譜密度');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%通過高斯信道figure(2)subplot(2,2,1);plot(s1),title('調(diào)制信號(Awgn)');axis([0500-55]);subplot(2,2,2);psd(h,s1,'fs',fs),title('調(diào)制信號功率譜密度(Awgn)');subplot(2,2,3);plot(s111),title('高斯噪聲曲線');axis([02000-55]);subplot(2,2,4);fori=1:nb/2plot(idata(i),qdata(i),'r+'),title('QPSK信號星座圖(Awgn)');holdon;axis([-22-22]);plot(Awgn_ichsum(i),Awgn_qchsum(i),'*');holdon;legend('理論值(發(fā)射端)','實際值(接收端)');end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%通過高斯信道再通過瑞利衰落信道figure(3)subplot(2,2,1)plot(Ray_s),title('調(diào)制信號(Ray+Awgn)');axis([0500-55]);subplot(2,2,2);psd(h,Ray_s,'fs',fs),title('調(diào)制信號功率譜密度(Ray)');subplot(2,2,3);fori=1:nb/2plot(idata(i),qdata(i),'r+'),title('QPSK信號星座圖(Awgn+Ray)');holdon;axis([-22-22]);plot(Ray_ichsum(i),Ray_qchsum(i),'*');holdon;legend('理論值(發(fā)射端)','實際值(接收端)');endsubplot(2,2,4)semilogy(SNRindB2,theo_err_awgn_prb,'r'),title('誤碼率曲線');holdon;semilogy(SNRindB1,smld_bit_awgn_err_prb,'r*');holdon;semilogy(SNRindB2,theo_err_ray_prb);holdon;semilogy(SNRindB1,smld_bit_ray_err_prb,'*');xlabel('Eb/No');ylabel('BER');legend('理論AWGN','仿真AWGN','理論Rayleigh','仿真Rayleigh');%文件2function[pb,ps]=cm_sm32(snr_in_dB)%[pb,ps]=cm_sm32(snr_in_dB)%CM_SM3findstheprobabilityofbiterrorandsymbolerrorfor%thegivenvalueofsnr_in_dB,signaltonoiseratioindB.N=100;E=1;%energypersymbolnumofsymbolerror=0;numofbiterror=0;counter=0;snr=10^(snr_in_dB/10);%signaltonoiseratiosgma=sqrt(E/snr)/2;%noisevariances00=[10];s01=[01];s11=[-10];s10=[0-1];%signalmapping%generationofthedatasourcewhile(numofbiterror<100)fori=1:N,temp=rand;%auniformrandomvariablebetween0and1if(temp<0.25),%withprobability1/4,sourceoutputis"00"dsource1(i)=0;dsource2(i)=0;elseif(temp<0.5),%withprobability1/4,sourceoutputis"01"dsource1(i)=0;dsource2(i)=1;elseif(temp<0.75),%withprobability1/4,sourceoutputis"10"dsource1(i)=1;dsource2(i)=0;else%withprobability1/4,sourceoutputis"11"dsource1(i)=1;dsource2(i)=1;end;end;%detectionandtheprobabilityoferrorcalculationfori=1:N,ray=raylrnd(0.8);n=sgma*randn(1,2);%2normaldistributedr.vwith0,variancesgmaif((dsource1(i)==0)&(dsource2(i)==0)),r=ray*s00+n;elseif((dsource1(i)==0)&(dsource2(i)==1)),r=ray*s01+n;elseif((dsource1(i)==1)&(dsource2(i)==0)),r=s10*ray+n;elser=s11*ray+n;end;%Thecorrelationmetricsarecomputedbelowc00=dot(r,s00);c01=dot(r,s01);c10=dot(r,s10);c11=dot(r,s11);%Thedecisionontheithsymbolismadenextc_max=max([c00,c01,c10,c11]);if(c00==c_max),decis1=0;decis2=0;elseif(c01==c_max),decis1=0;decis2=1;elseif(c10==c_max),decis1=1;decis2=0;elsedecis1=1;decis2=1;end;%Incrementtheerrorcounter,ifthedecisionisnotcorrectsymbolerror=0;if(decis1~=dsource1(i)),numofbiterror=numofbiterror+1;symbolerror=1;end;if(decis2~=dsource2(i)),numofbiterror=numofbiterror+1;symbolerror=1;end;if(symbolerror==1),numofsymbolerror=numofsymbolerror+1;end;endcounter=counter+1;endps=numofsymbolerror/(N*counter);%sincetherearetotallyNsymbolspb=numofbiterror/(2*N*counter);%since2Nbitsaretransmitted%文件3function[pb1,ps1]=cm_sm32(snr_in_dB)%[pb,ps]=cm_sm32(snr_in_dB)%CM_SM3findstheprobabilityofbiterrorandsymbolerrorfor%thegivenvalueofsnr_in_dB,signaltonoiseratioindB.N=100;E=1;%energypersymbolsnr=10^(snr_in_dB/10);%signaltonoiseratiosgma=sqrt(E/snr)/2;%noisevariances00=[10];s01=[01];s11=[-10]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論