matlab課程設計--循環(huán)碼的性能分析_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設計任務書</b></p><p>  學生姓名: 專業(yè)班級: </p><p>  指導教師: </p><p>  工作單位: </p><p>  題目: 循環(huán)碼

2、的性能分析 </p><p>  初始條件: MATLAB,速率為100Bd的矩形輸入信號,AWGN信道</p><p>  要求完成的主要任務: </p><p>  1、畫出編碼器輸入、輸出信號,信道的輸出信號,譯碼器的輸出信號的波形、頻譜。</p><p>  2、畫出

3、誤碼率與譯碼器輸入信噪比的關系曲線;</p><p><b>  時間安排:</b></p><p><b>  第十三周:查閱資料</b></p><p>  第十四周:仿真及撰寫報告。</p><p>  3、 第十五周:答辯</p><p>  指導教師簽名:

4、 2011 年 12 月 15 日</p><p>  系主任(或責任教師)簽名: 2011 年 12 月 15 日</p><p><b>  目錄</b></p><p><b>  摘要3</b></p><p&

5、gt;  Abstract4</p><p>  1 Matlab簡介5</p><p>  2 設計項目分析6</p><p>  2.1 數字通信系統(tǒng)模型6</p><p>  2.2 數字基帶系統(tǒng)6</p><p>  2.3 AWGN信道7</p><p><b>

6、  2.4 循環(huán)碼8</b></p><p>  2.5 誤碼率和信噪比13</p><p>  3.matlab建模設計14</p><p>  3.1 信源模塊14</p><p>  3.2 循環(huán)碼編碼15</p><p>  3.3 awgn信道加噪16</p><p

7、>  3.4循環(huán)碼譯碼17</p><p>  3.5誤碼率與信噪比18</p><p><b>  3.6功率譜20</b></p><p><b>  4.總結23</b></p><p><b>  參考文獻24</b></p><p&

8、gt;  附錄 程序清單25</p><p><b>  摘要</b></p><p>  循環(huán)碼是線性分組碼中一種重要的編碼。它是在嚴密的代數理論基礎上建立起來的。其編碼和解碼相對簡單,但檢(糾)錯的能力較強。循環(huán)碼除了具有線性碼的一般性質外,還具有循環(huán)性。目前發(fā)現的大部分線性碼與循環(huán)碼有密切關系,本設計利用MATLAB對信號源序列生成,循環(huán)碼編解碼過程,AWGN

9、信道加噪過程建模,分析各個模塊波形與功率譜,并畫出誤碼率與信噪比關系曲線。對仿真數據,波形進行綜合分析,達到設計目的。</p><p>  關鍵詞:MATLAB,循環(huán)碼,AWGN,方波</p><p><b>  Abstract</b></p><p>  Cycle code is one of the important code bet

10、ween linear block code,which is built on the base of strict algebraic theory.Its coding and decoding is relatively simple,but takes advantage of error detection and correc-</p><p>  tion.Besides of universit

11、y of linear block code,cycle code is provided with cyclicity.Most of known linear code is closely related to this code.This design model sequence generating as information source,coding and decoding of cycle code,process

12、 of adding noise to information channel all by utilizing MATLAB.Waveform and power spectrum of each module are</p><p>  analyzed,relation curve of between SNR and error rate is printed. Comprehensive analysi

13、s of the simulation waveforms and data leads to accomplishment of purpose for design.</p><p>  Key words:MATLAB,cycle code,AWGN channel,square wave</p><p>  1 Matlab簡介</p><p>  MATL

14、AB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室),是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環(huán)境。在很大程度上擺脫了傳統(tǒng)非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。主要包括MATLAB和SIMULINK兩大部分。</p><p>  MATLABT通信系統(tǒng)功能函數庫由七十多個函

15、數組成,每個函數有多種選擇參數,函數功能覆蓋了現代通信系統(tǒng)的各個方面。這些函數包括:信號源產生函數、信源編碼/解碼函數、接錯控制編碼/解碼函數、調制/解調函數(基帶和通帶)、濾波器函數、傳輸信道模型函數(基帶和通帶)、TDMA、FDMA、CDMA函數、同步函數、工具函數等。在糾錯控制編解碼函數中,函數庫提供了線性分組碼、漢明碼、循環(huán)碼、BCH碼、里德一索洛蒙碼(REED---SOLOMON)、卷積碼等6種糾錯控制編碼,每種編碼又有編碼、

16、解碼、矢量輸入輸出、序列輸入輸出等四種形式的函數表達。</p><p><b>  2 設計項目分析</b></p><p>  2.1 數字通信系統(tǒng)模型</p><p>  數字通信系統(tǒng)(Digital Communication System,DCS)是利用數字信號來傳遞信息的通信系統(tǒng),如圖2.1所示,數字通信涉及的技術問題很多,其中主要有

17、信源編碼與譯碼、數字調制與解調、同步以及加密與解密等。</p><p>  圖2.1 數字通信系統(tǒng)模型</p><p>  2.2 數字基帶系統(tǒng)</p><p>  在原理上數字信息可以直接用數字代碼序列表示和傳輸,但在實際傳輸中,視系統(tǒng)的要求和信道情況,一般需要選用不同形式的編碼。未經調制的數字信號所占據的頻譜是從零頻或很低的頻率開始,稱為數字基帶信號。為了匹配信

18、道的特性以獲得令人滿意的傳輸效果,需要選擇不同的傳輸波形來表示“0”和“1”。</p><p>  在矩形脈沖中,基本的基帶信號波形包括單極性波形,雙極性波形,單極性歸零波形,雙極性歸零波形,差分波形,多電平波形等。雙極性波形有利于在信道中傳輸,并且在接收端恢復信號中判決電平為0,因而不受信道特性變化的影響,抗干擾能力也較強,但這不利于對循環(huán)碼特性的研究,在后面的調試中發(fā)現循環(huán)碼的抗干擾能力已經很強,為了便于觀察

19、,選擇更為簡單的單極性非歸零波形,用以突出循環(huán)碼的作用。</p><p>  圖2.2.1 單極性非歸零碼波形</p><p>  另一方面,由于數字基帶信號是一個隨機脈沖序列,沒有確定的頻譜函數,所以只能用功率譜來描述它的頻譜特性。功率譜是隨機過程的統(tǒng)計平均概念,平穩(wěn)隨機過程的功率譜是一個確定函數;而頻譜是隨機過程樣本的Fourier變換,對于一個隨機過程而言,頻譜也是一個“隨機過程”。

20、功率譜可以從兩方面來定義,一個是自相關函數的傅立葉變換,另一個是時域信號傅氏變換模平方然后除以時間長度。第一種定義就是常說的維納辛欽定理,而第二種其實從能量譜密度來的。根據parseval定理,信號傅氏變換模平方被定義為能量譜,能量譜密度在時間上平均就得到了功率譜。</p><p>  圖2.2.2 單極性非歸零碼功率譜</p><p>  2.3 AWGN信道</p>&l

21、t;p>  加性高斯白噪聲 AWGN(Additive White Gaussian Noise) 是最基本的噪聲與干擾模型。加性噪聲:疊加在信號上的一種噪聲。白噪聲:噪聲的功率譜密度在所有的頻率上均為一常數,則稱這樣的噪聲為白噪聲。如果白噪聲取值的概率分布服從高斯分布,則稱這樣的噪聲為高斯白噪聲。在通信上指的是一種通道模型(channel model),此通道模型唯一的信號減損是來自于寬帶的(Bandwidth)線性加成或是穩(wěn)定

22、譜密度(以每赫茲瓦特的帶寬表示)與高斯分布振幅的白噪聲 。 </p><p><b>  2.4 循環(huán)碼</b></p><p>  2.4.1循環(huán)碼原理</p><p>  循環(huán)碼是線性分組碼的一種,所以它具有線性分組

23、碼的一般特性,此外還具有循環(huán)性。循環(huán)碼的編碼和解碼設備都不太復雜,且檢(糾)錯能力強。它不但可以檢測隨機的錯誤,還可以檢錯突發(fā)的錯誤。(n,k)循環(huán)碼可以檢測長為n-k或更短的任何突發(fā)錯誤,包括首尾相接突發(fā)錯誤。</p><p>  循環(huán)碼是一種無權碼,循環(huán)碼編排的特點是相鄰兩個數碼之間符合卡諾圖中的鄰接條件,即相鄰兩個數碼之間只有一位碼元不同,碼元就是組成數碼的單元。循環(huán)碼的優(yōu)點是沒有瞬時錯誤,因為在數碼變換過

24、程中,在速度上會有快有慢,中間經過其它一些數碼形式,稱它們?yōu)樗矔r錯誤。這在某些數字系統(tǒng)中是不允許的,為此希望相鄰兩個數碼之間僅有一位碼元不同,即滿足鄰接條件,這樣就不會產生瞬時錯誤。循環(huán)碼就是這樣一種編碼,它可以在卡諾圖中依次循環(huán)得到。循環(huán)碼又稱格雷碼( Grey Code )。</p><p>  循環(huán)碼最大的特點就是碼字的循環(huán)特性,所謂循環(huán)特性是指:循環(huán)碼中任一許用碼組經過循環(huán)移位后,所得到的碼組仍然是許用碼

25、組。若(  )為一循環(huán)碼組,則()、()……還是許用碼組。也就是說,不論是左移還是右移,也不論移多少位,仍然是許用的循環(huán)碼組。</p><p>  2.4.2 循環(huán)碼的多項式表示</p><p>  設碼長為n的循環(huán)碼表示為(),其中為二進制數,通常把碼組中各碼元當做二進制的系數,即把上式中長為n的各個分量看做多項式:</p><p>  的各項系數,則碼

26、字與碼多項式一一對應,這種多項式中,x僅表示碼元位置的標記,因此我們并不關心x的取值,這種多項式稱為碼多項式。</p><p>  2.4.3 (n,k)循環(huán)碼的生成多項式</p><p>  (n,k)循環(huán)碼的生成多項式寫為g(x),它是(n,k)循環(huán)碼碼集中唯一的,冪次為n-k的碼多項式,則是一個冪次為n的碼多項式。按模()運算,此時:</p><p>  即

27、 </p><p>  且因 g(x)也是n階冪,故Q(x)=1。由于它是循環(huán)碼,故按模()運算后的“余式”也是循環(huán)碼的一個碼字,它必能被g(x)整除,即:</p><p>  由以上兩式可以得到:</p><p>  和 </p>

28、<p>  從上式中可以看出,生成多項式g(x)應該是的一個因式,即循環(huán)碼多項式應該是的一個n-k次因式。</p><p>  2.4.4 循環(huán)碼的生成矩陣和一致校驗矩陣</p><p>  對所有的i=0,1,2,……k-1,用生成多項式g(x)除,有:</p><p>  式中是余式,表示為:</p><p>  因此,是g(

29、x)的倍式,即是碼多項式,由此得到系統(tǒng)形式的生成矩陣為:</p><p>  它是一個kn階的矩陣。</p><p>  同樣,由G=0可以得到系統(tǒng)形式的一致校驗矩陣為:</p><p>  如已知(7,4)循環(huán)碼的生成多項式和校驗多項式分別為:,。寫得其生成矩陣和校驗矩陣分別為:</p><p>  2.4.5 循環(huán)碼編碼原理</p

30、><p>  有信息碼構成信息多項式,其中最高冪次為k-1;</p><p>  用乘以信息多項式m(x),得到的,最高冪次為n-1,該過程相當于把信息碼(,,……,,)移位到了碼字德前k個信息位,其后是r個全為零的監(jiān)督位;用g(x)除得到余式r(x),其次數必小于g(x)的次數,即小于(n-k),將此r(x)加于信息位后做監(jiān)督位,即將r(x)于相加,得到的多項式必為一碼多項式。</p&

31、gt;<p>  根據上面的討論,可得到在(7,4)循環(huán)碼編碼的程序框圖如圖1 所示:</p><p>  2.4.6 循環(huán)碼的糾錯原理</p><p>  糾錯碼的譯碼是該編碼能否得到實際應用的關鍵所在。譯碼器往往比編碼較難實現,對于糾錯能力強的糾錯碼更復雜。當碼字c通過噪聲信道傳送時,會受到干擾而產生錯誤。如果信道產生的錯誤圖樣是e,譯碼器收到的n重接受矢量是y,則表示為

32、: </p><p>  上式也可以寫成多項式形式:</p><p>  譯碼器的任務就是從y(x)中得到,然后求的估值碼字</p><p><b>  并從中得到信息組。</b></p><p>  循環(huán)碼譯碼可按以下三個步驟進行:</p><p> ?。?)有接收到的y(x)計算伴隨式s(x)

33、;</p><p>  (2)根據伴隨式s(x)找出對應的估值錯誤圖樣;</p><p>  (3)計算,得到估計碼字。若,則譯碼正確,否則,若,則譯碼錯誤。</p><p>  由于g(x) 的次數為n - k 次,g(x) 除E(x) 后得余式(即伴隨式)的最高次數為n-k-1次,循環(huán)碼錯誤圖樣表:</p><p>  上式指出了系統(tǒng)循環(huán)

34、碼的譯碼方法:將收到的碼字R(x) 用g(x) 去除,如果除盡則無錯;否則有錯。如果有錯,可由余式S(x) 一一找出對應圖樣,然后將錯誤圖樣E(x) 與R(x) 模2 和,即為所求碼字C(x),從而實現糾錯目的。根據前面的討論,可得(7,4)循環(huán)碼譯碼的程序框圖如圖2.3.1 所示:</p><p>  2.5 誤碼率和信噪比</p><p>  誤碼率(BER:bit error rat

35、io)是衡量數據在規(guī)定時間內數據傳輸精確性的指標,是衡量一個數字系統(tǒng)可靠性的主要的判斷依據。雖然現在手機系統(tǒng)有許多儀器都可以直接對該項作直接的測量,但是對數字對講機以及新興的采用新的協議模式的設備,誤碼率的測試就會比較繁瑣。而很多現有的設備都是基于模擬指標的測量,如果能找到模擬的指標與誤碼率之間的關系,那么將更方便我們的調試。在之前我們已經能直觀的能觀察到誤碼率BER 與模擬的信噪比SNR 以及射頻中的噪聲干擾存在一種相對應的關系。&l

36、t;/p><p><b>  3.程序主體設計</b></p><p>  3.1 偽隨機序列產生模塊</p><p>  對于精度要求不高的偽隨機序列,可以采用如下函數: </p><p><b>  rand</b></p><p>  功能: 生成偽隨機數序列。</p

37、><p><b>  調用格式:</b></p><p>  randi(imax,m,n)</p><p>  說明:返回一個m*n階矩陣,m和n都必須是非負整數值,如果m,n任一為負數,將被當做0處理。</p><p><b>  stairs</b></p><p>  功

38、能:在matlab中stairs函數用于繪制階梯狀圖。</p><p>  調用格式:stairs(X,Y)</p><p>  程序與仿真結果如下:</p><p>  r=3;n=2^r-1;k=n-r;</p><p>  sig0=randi([0 1],k*1000,1);</p><p><b>

39、  figure(2)</b></p><p>  t=1:length(sig0);</p><p>  stairs(t-1,sig0)</p><p>  axis([0 4*3 min(sig0)-0.5 max(sig0)+0.5])</p><p>  title('編碼器輸入信號波形')</p&

40、gt;<p>  圖3.1 編碼器輸入信號波形</p><p><b>  3.2 循環(huán)碼編碼</b></p><p><b>  encode</b></p><p>  功能:完成漢明碼,循環(huán)碼,線性碼等的編碼調用格式:code = encode(msg,n,k,'cyclic/fmt'

41、,genpoly)</p><p>  說明:用method指定的方法完成糾錯編碼。其中msg代表信息碼元,是一個K列矩陣,N是編碼后的碼字長度;K是信息位的長度;opt是有些編碼方式需要的參數。使用如下語句:</p><p>  sig1=encode(sig0,n,k,'cyclic')</p><p><b>  測試結果:</

42、b></p><p>  輸入3組4位序列:{0000}{1110}{0101}</p><p>  輸出3組7位序列:{0000000}{1001110}{1000101}</p><p>  查表得滿足循環(huán)碼編碼規(guī)則,仿真結果正確。</p><p><b>  仿真波形:</b></p><

43、p>  圖3.2 編碼器輸入輸出信號</p><p>  3.3 awgn信道加噪</p><p><b>  awgn</b></p><p>  功能:在某一信號中加入高斯白噪聲</p><p>  y = awgn(x,SNR) 在信號x中加入高斯白噪聲。信噪比SNR以dB為單位。x的強度假定為0dBW。如果

44、x是復數,就加入復噪聲。</p><p>  為便于觀察,取snr=10程序段如下:</p><p><b>  snr=10;</b></p><p>  sig2=(awgn(sig1,snr)>0.5)*1;</p><p>  subplot(4,2,5)</p><p>  t=1

45、:length(sig2);</p><p>  stairs(t-1,sig2)</p><p>  axis([0 7*3 min(sig2)-0.5 max(sig2)+0.5])</p><p>  title('信道輸出信號')</p><p>  仿真波形如圖3.3:</p><p>  圖

46、3.3 信道輸出信號</p><p>  設置信噪比為10,編碼信號加入高斯白噪聲后失真嚴重。足以突出循環(huán)碼作用。</p><p><b>  3.4循環(huán)碼譯碼</b></p><p><b>  decode函數</b></p><p><b>  功能:譯碼函數</b>&l

47、t;/p><p>  語法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4); </p><p>  說明:這個函數對接收到的碼字進行譯碼,恢復出原始的信息,譯碼參數和方式必須和編碼時采用的嚴格相同。它對接收到的碼字,按method指定的方式進行譯碼;opt1,…,opt4是可選項的參數。</p><p>  sig3 =

48、decode(sig2,n,k,'cyclic');</p><p>  subplot(4,2,7)</p><p>  t=1:length(sig3);</p><p>  stairs(t-1,sig3)</p><p>  axis([0 4*3 min(sig3)-0.5 max(sig3)+0.5])</p

49、><p>  title('譯碼器輸出信號')</p><p><b>  仿真結果:</b></p><p>  圖3.4 譯碼器輸出信號波形</p><p>  觀察波形得,譯碼器輸出信號波形與編碼器輸入信號波形相同,符合實際情況。</p><p>  3.5誤碼率與信噪比<

50、/p><p><b>  symerr</b></p><p>  功能:計算錯誤符號的個數和誤符號率。</p><p>  調用格式:[number,ratio]=symerr(x,y)</p><p>  說明number是一個標量或者是一個向量,它指出了x和y兩組數據集相比不同符號的個數;</p><

51、;p>  ratio為誤符號率,它等于number除以總符號數(x和y中較小數)。snr=[0.1:0.1:20];ratio=[];</p><p>  for var=1:1:200</p><p>  sig2=(awgn(sig1,snr(var))>0.5)*1;</p><p>  sig3= decode(sig2,n,k,'cyc

52、lic');</p><p>  [number,ratio(var)]=symerr(sig0,sig3)</p><p><b>  end</b></p><p><b>  figure(2)</b></p><p>  plot(snr,ratio);</p><

53、;p>  title('誤碼率與信噪比關系曲線')</p><p><b>  仿真結果:</b></p><p>  圖3.5 信噪比與誤碼率關系曲線</p><p><b>  3.6頻譜計算函數</b></p><p><b>  fft</b>&l

54、t;/p><p>  功能:一維基2快速傅里葉變換。</p><p><b>  調用格式:</b></p><p>  y=fft(x):利用FFT算法計算矢量x的離散傅里葉變換。當x為2的冪次方時,采用高速基2FFT算法,否則為稍慢的混合算法。</p><p>  y=fft(x,N):采用n點FFT。當x的長度小于N時

55、,FFT函數在x的尾部補零,以構成N點數據,當x的長度大于N時,FFT函數在x的尾部截斷,以構成N點數據。</p><p><b>  fftshift</b></p><p>  功能:對FFT的輸出進行重新排列,將零頻分量移到頻譜的中心。</p><p><b>  調用格式:</b></p><p

56、>  y=fftshift(x):對FFT的輸出進行重新排列,將零頻分量移到頻譜的中心。</p><p>  function sigfft(x)</p><p>  % Summary of this function goes here</p><p>  % Detailed explanation goes here</p>&l

57、t;p><b>  clc</b></p><p>  N=length(x); </p><p><b>  %N=512;</b></p><p><b>  fs=300;</b></p><p><b>  df=100/N;</b><

58、/p><p>  f=(0:length(x)-1)'*fs/length(x);</p><p>  plot(f,abs(fftshift(fft(x)))/N);</p><p>  %axis([149 151 0 1])</p><p><b>  end</b></p><p>&

59、lt;b>  仿真結果: </b></p><p>  數字基帶信號是一個隨機脈沖序列,沒有確定的頻譜函數,所以只能用功率譜來描述它的頻譜特性。功率譜是隨機過程的統(tǒng)計平均概念,平穩(wěn)隨機過程的功率譜是一個確定函數;頻譜只是隨機過程樣本的Fourier變換,查閱資料找到另一種表現形式:功率譜密度。</p><p><b>  函數定義如下:</b><

60、;/p><p>  function[f,sf]= T2F(t,st) </p><p>  dt = t(2)-t(1); </p><p>  T=t(end); </p><p>  df = 1/T; </p><p>  N = length(st); </p><p>  %f=-N/2

61、*df+df/2:df:N/2*df-df/2;</p><p>  f=-N/2*df:df:N/2*df-df; </p><p>  sf = fft(st); </p><p>  sf = T/N*fftshift(sf); </p><p>  在序列中插入M-1個0的函數定義如下</p><p>  fu

62、nction[out]=sigexpand(d,M) </p><p>  N = length(d); </p><p>  out = zeros(M,N); </p><p>  out(1,:) = d; </p><p>  out = reshape(out,1,M*N); </p><p>  修改后的功

63、率譜密度函數主要代碼:</p><p>  function sigfft(x)</p><p><b>  clc</b></p><p><b>  Ts=1; </b></p><p>  N_sample =100;</p><p>  dt = Ts/N_sampl

64、e; </p><p>  N = length(x); </p><p>  t = 0:dt:(N*N_sample-1)*dt; </p><p>  T = N*N_sample*dt; </p><p>  gt1 = ones(1,N_sample); </p><p>  data = sigexpa

65、nd(x,N_sample); </p><p>  st1 = conv(data,gt1); </p><p>  [f,st1f] = T2F(t,[st1(1:length(t))]); </p><p>  plot(f,abs(st1f).^2);</p><p>  %semilogy(f,abs(st1f).^2) ; &

66、lt;/p><p>  axis([-5 5 0 1000]); </p><p><b>  end</b></p><p>  功率譜仿真結果如下:</p><p><b>  4.總結</b></p><p>  本次課程設計主要使用了MATLAB軟件,使我對MATLAB的

67、運用更加熟練。對循環(huán)碼的設計也使我投入到對課本知識的再一次探討中去,從不同的角度講所學應用到實踐中去。加深了我對這部分知識的理解,鍛煉了對于資料的收集整理運用的能力。對MATLAB自帶幫助文檔的運用更是提高了我對英語學習重要性的認知。</p><p>  設計初,查閱資料,構建基本模型,完成程序主要流程并成功運行下來耗時一天,這個過程并不漫長,在學校基于MATLAB的DSP實驗課上,我積累了一定的基礎認知,可以初

68、步簡單運用該軟件,為這一環(huán)節(jié)打下了基礎。然后接下來日子將重點放在各個模塊的精細改進,各種程序之間的優(yōu)劣,編程效率也納入自己的考慮之中,這一階段我忙于對各個部分功能以及網上資料的測試,真正印證了“矩陣實驗室”的意義。此階段耗時最長,收獲也最多,改變了平時學習中浮于表面,毛毛躁躁的習慣。</p><p>  撰寫報告過程是自己對這次設計的一個完整回顧,又從一個新的角度整理實驗數據與資料。將林林總總的實驗程序、數據的整

69、合過程中鍛煉了自己的綜合素質。對于問題的考慮還不夠全面,諸如沒有備份程序,修改后程序已經面目全非也使自己的心情極為煩躁??朔@些問題其實也可以學到其他方面的知識,終將使自己的能力得到全方位的提高。</p><p>  誠然,自己的設計還有許許多多不完善的地方,各個方面也不一定面面俱到,但總體來講,過程中的收獲大于結果,更是培養(yǎng)了自己對于學習的興趣。</p><p><b>  參

70、考文獻</b></p><p>  [1]樊昌信,曹麗娜,《通信原理(第六版)》,國防工業(yè)出版社,2007年出版。</p><p>  [2]劉泉,闕大順,郭志剛,《數字信號處理原理與實現》,電子工業(yè)出版社,2009.年出版。</p><p>  [3] Vinay K.Ingle,《數字信號處理及其MATLAB實現》,電子工業(yè)出版社,1998年出版。

71、</p><p>  [4] Sanjit K. Miltra,《Digital Signal Processing Laboratory Using Matlab》,McGraw-Hill出版社,2000年出版。</p><p><b>  附錄 程序清單</b></p><p><b>  主程序</b></p&

72、gt;<p><b>  clc</b></p><p><b>  clear</b></p><p><b>  clf</b></p><p>  r=3;n=2^r-1;k=n-r;</p><p>  sig0=randi([0 1],k*1000,1)

73、;</p><p>  subplot(4,2,1)</p><p>  t=1:length(sig0);</p><p>  stairs(t-1,sig0)</p><p>  axis([0 4*3 min(sig0)-0.5 max(sig0)+0.5])</p><p>  title('編碼器輸入

74、信號')</p><p>  subplot(4,2,2);</p><p>  sigfft(sig0);</p><p>  title('編碼器輸入信號功率譜密度')</p><p>  sig1=encode(sig0,n,k,'cyclic');</p><p>  s

75、ubplot(4,2,3)</p><p>  t=1:length(sig1);</p><p>  stairs(t-1,sig1)</p><p>  axis([0 7*3 min(sig1)-0.5 max(sig1)+0.5])</p><p>  title('編碼器輸出信號波形')</p><

76、;p>  subplot(4,2,4);</p><p>  sigfft(sig1);</p><p>  title('編碼器輸出信號功率譜密度')</p><p><b>  snr=10;</b></p><p>  sig2=(awgn(sig1,snr)>0.5)*1;</p

77、><p>  subplot(4,2,5)</p><p>  t=1:length(sig2);</p><p>  stairs(t-1,sig2)</p><p>  axis([0 7*3 min(sig2)-0.5 max(sig2)+0.5])</p><p>  title('信道輸出信號波形'

78、;)</p><p>  subplot(4,2,6);</p><p>  sigfft(sig2);</p><p>  title('信道輸出信號功率譜密度')</p><p>  [sig3,err,ccode,cerr] = decode(sig2,n,k,'cyclic');</p>

79、<p>  subplot(4,2,7)</p><p>  t=1:length(sig3);</p><p>  stairs(t-1,sig3)</p><p>  axis([0 4*3 min(sig3)-0.5 max(sig3)+0.5])</p><p>  title('譯碼器輸出信號波形')<

80、;/p><p>  subplot(4,2,8);</p><p>  sigfft(sig3);</p><p>  title('譯碼器輸出信號功率譜密度')</p><p>  disp('Transpose of err is'); disp(err')</p><p>  

81、disp('Transpose of cerr is'); disp(cerr')</p><p>  set(gcf,'color','white')</p><p><b>  誤碼率與信噪比程序</b></p><p><b>  clc</b></p&g

82、t;<p>  sig0=randi([0 1],k*1000,1);</p><p>  sig1=encode(sig0,n,k,'cyclic');</p><p>  snr=[0.1:0.1:20];ratio=[];</p><p>  for var=1:1:200</p><p>  sig2=(

83、awgn(sig1,snr(var))>0.5)*1;</p><p><b>  %end</b></p><p>  sig3= decode(sig2,n,k,'cyclic');</p><p>  [number,ratio(var)]=symerr(sig0,sig3)</p><p>

84、<b>  end</b></p><p><b>  figure(2)</b></p><p>  plot(snr,ratio);</p><p>  title('誤碼率與信噪比曲線')</p><p>  set(gcf,'color','white

85、')</p><p><b>  T2F函數</b></p><p>  function[f,sf]= T2F(t,st) </p><p>  dt = t(2)-t(1); </p><p>  T=t(end); </p><p>  df = 1/T; </p>&

86、lt;p>  N = length(st); </p><p>  f=-N/2*df:df:N/2*df-df; </p><p>  sf = fft(st); </p><p>  sf = T/N*fftshift(sf); </p><p>  4.sigexpand函數</p><p>  funct

87、ion[out]=sigexpand(d,M) </p><p>  %將輸入序列擴展成間隔為0的序列</p><p>  N = length(d); </p><p>  out = zeros(M,N); </p><p>  out(1,:) = d; </p><p>  out = reshape(out,

88、1,M*N); </p><p>  5,功率譜密度計算函數</p><p>  function sigfft(x)</p><p><b>  clc</b></p><p><b>  Ts=1; </b></p><p>  N_sample =100;</p&

89、gt;<p>  dt = Ts/N_sample; </p><p>  N = length(x); </p><p>  t = 0:dt:(N*N_sample-1)*dt; </p><p>  T = N*N_sample*dt; </p><p>  gt1 = ones(1,N_sample); </p

90、><p>  data = sigexpand(x,N_sample); </p><p>  st1 = conv(data,gt1); </p><p>  [f,st1f] = T2F(t,[st1(1:length(t))]); </p><p>  plot(f,abs(st1f).^2);</p><p>  

91、%semilogy(f,abs(st1f).^2) ; </p><p>  axis([-5 5 0 1000]); </p><p><b>  end</b></p><p>  6.測試用單極性不歸零信號波形與功率譜密度程序</p><p>  clear all; </p><p>

92、  close all; </p><p><b>  Ts=1; </b></p><p>  N_sample = 8; </p><p>  dt = Ts/N_sample; </p><p>  N = 1000; </p><p>  t = 0:dt:(N*N_sample-1)

93、*dt; </p><p>  T = N*N_sample*dt; </p><p>  gt1 = ones(1,N_sample); </p><p>  d = ( sign( randn(1,N) ) +1)/2; </p><p>  data = sigexpand(d,N_sample); </p><p

94、>  st1 = conv(data,gt1); </p><p>  d = 2*d-1; </p><p>  data= sigexpand(d,N_sample); </p><p>  [f,st1f] = T2F(t,[st1(1:length(t))]); </p><p>  figure(1) </p>

95、<p>  subplot(121) </p><p>  plot(t,[st1(1:length(t))] );</p><p>  axis([0 20 -0.1 1.1]); </p><p>  ylabel('單極性不歸零信號波形'); </p><p>  subplot(122); </p&g

溫馨提示

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

評論

0/150

提交評論