![卷積碼的編譯碼MATLAB程序_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/e3606d9a-7417-4efb-86dd-9e84a71efd00/e3606d9a-7417-4efb-86dd-9e84a71efd001.gif)
![卷積碼的編譯碼MATLAB程序_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/e3606d9a-7417-4efb-86dd-9e84a71efd00/e3606d9a-7417-4efb-86dd-9e84a71efd002.gif)
![卷積碼的編譯碼MATLAB程序_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/e3606d9a-7417-4efb-86dd-9e84a71efd00/e3606d9a-7417-4efb-86dd-9e84a71efd003.gif)
![卷積碼的編譯碼MATLAB程序_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/e3606d9a-7417-4efb-86dd-9e84a71efd00/e3606d9a-7417-4efb-86dd-9e84a71efd004.gif)
![卷積碼的編譯碼MATLAB程序_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/e3606d9a-7417-4efb-86dd-9e84a71efd00/e3606d9a-7417-4efb-86dd-9e84a71efd005.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、%survivor state是一個(gè)矩陣,它顯T了通過(guò)網(wǎng)格的最優(yōu)路徑,這個(gè)矩陣通過(guò)一個(gè)單獨(dú)的函數(shù)metric(x,y給出。%其中G是一個(gè)矩陣,它的任一行決定了從移位寄存器到模2加法器的連接方式.為生成矩陣%這里,我們做了一個(gè)簡(jiǎn)單的(2,1,7卷積碼編碼器。k=1;G=1 0 1 1 0 1 1;1 1 1 1 0 0 1;%G1=133,G2=171%以下3種輸入序列,可任選一種%input=0 0 0 0 0 0 0;%全0輸入%input=1 1 1 1 1 1 1;%全1輸入input=round(rand(1,7*1;%隨機(jī)系列輸入,也可用 randint(1,7,0 1figure;
2、plot(input,'*r' %figure1:畫(huà)圖:目標(biāo)input,紅色(red,r),形狀為*s=input;g1=G(1,:;g2=G(2,:;c1=conv(s,g1;%作卷積%disp(c1;c2=conv(s,g2;%disp(c2;n=length(c1;%7位輸入時(shí)n=13c=zeros(1,2*n;%生成全0矩陣,1*26%disp(c;for i=1:nc(2*i-1=c1(i;c(2*i=c2(i;%兩個(gè)模2加法器分別輸出卷積結(jié)果序列后,由旋轉(zhuǎn)開(kāi)關(guān)讀取的結(jié)果(此時(shí)僅為卷積結(jié)果,非2進(jìn)制0/1)endfor i=1:2*nif(mod(c(i,2=0% m
3、od(c(i,2=0意思:c(i除以2,余數(shù)為0c(i=0;else c(i=1;endendoutput=c;channel_output=output;%輸出矩陣%disp(channel_output;figure;plot(output,'*b' %畫(huà)圖:目標(biāo):卷積碼編碼輸出,藍(lán)色(blue,b)*%以上為編碼部分,以下為維特比譯碼n=size(G,1;%取矩陣G的行數(shù),故n=2。即得到輸出端口,即2個(gè)模2加法器%檢驗(yàn)G的維數(shù)if rem(size(G,2,k=0 %當(dāng)矩陣G的列數(shù)不為k的整數(shù)倍時(shí),rem為求余函數(shù)error('Size of G and k d
4、o not agree'%報(bào)錯(cuò)endif rem(size(channel_output,2,n=0 %當(dāng)輸出矩陣的列數(shù)不是輸出端口n的整數(shù)倍時(shí)。(注:size(channel_output,2=26,2個(gè)模2加法器合成的輸出)error('channle output not of the right size'endL=size(G,2/k;%得出移位數(shù),即寄存器個(gè)數(shù),此例程為7%由于L-1個(gè)寄存器的狀態(tài)即可表示出輸出狀態(tài),所以總的狀態(tài)數(shù)number_of_states可由前L-1個(gè)寄存器的狀態(tài)組合來(lái)確定number_of_states=2(L-1*k;%此例程中2
5、6,移位寄存器組的狀態(tài)數(shù)為64個(gè)%產(chǎn)生狀態(tài)轉(zhuǎn)移矩陣,輸出矩陣和輸入矩陣for j=0:number_of_states-1 %表示當(dāng)前寄存器組的狀態(tài)。因狀態(tài)從0開(kāi)始,所以循環(huán)為從0到number_of_states-1for t=0:2k-1 %k位輸入端的信號(hào)組成的狀態(tài),總的狀態(tài)數(shù)為2k,所以循環(huán)為從0到2k-1next_state,memory_contents=nxt_stat(j,t,L,k;%nxt_stat完成從當(dāng)前的狀態(tài)和輸入的矢量得出下寄存器組的一個(gè)狀態(tài)input(j+1,next_state+1=t;%input數(shù)組值是用于記錄當(dāng)前狀態(tài)到下一個(gè)狀態(tài)所要的輸入信號(hào)矢量%inpu
6、t數(shù)組的維數(shù):一維坐標(biāo)x=j+1指當(dāng)前狀態(tài)的值,二維坐標(biāo)y=next_state+1指下一個(gè)狀態(tài)的值%由于Matlab中數(shù)組的下標(biāo)是從1開(kāi)始的,而狀態(tài)值是從0開(kāi)始的,所以以上坐標(biāo)值為:狀態(tài)值+1branch_output=rem(memory_contents*G',2;%branch_output用于記錄在狀態(tài)j下輸入1時(shí)的輸出nextstate(j+1,t+1=next_state;%nextstate狀態(tài)轉(zhuǎn)移矩陣,記錄了當(dāng)前狀態(tài)j下輸入1時(shí)的下一個(gè)狀態(tài)output(j+1,t+1=bin2deci(branch_output;%output記錄了當(dāng)前狀態(tài)j下輸入1時(shí)的輸出(十進(jìn)制
7、)endendinput;state_metric=zeros(number_of_states,2;%state_metric數(shù)組用于記錄譯碼過(guò)程在每個(gè)狀態(tài)時(shí)的漢明距離,大小為number_of_states,2%(:,1)為當(dāng)前狀態(tài)位置的漢明距離,為確定值;(:,2)為當(dāng)前狀態(tài)加輸入得到的下一個(gè)狀態(tài)漢明距離,為臨時(shí)值depth_of_trellis=length(channel_output/n;%depth_of_trellis用于記錄網(wǎng)格圖的深度channel_output_matrix=reshape(channel_output,n,depth_of_trellis;%channe
8、l_output_matrix為輸出矩陣,每一列為一個(gè)輸出狀態(tài)%reshape改變?cè)仃囆螤?,將channel_output矩陣變?yōu)閚行depth_of_trellis列矩陣survivor_state=zeros(number_of_states,depth_of_trellis+1;%survivor_state描述譯碼過(guò)程中在網(wǎng)格圖中的路徑row_survivor col_survivor=size(survivor_state;%開(kāi)始非尾信道輸出的解碼%i為段,j為何一階段的狀態(tài),t為輸入for i=1:depth_of_trellis-L+1 %i指示網(wǎng)格圖的深度f(wàn)lag=zeros
9、(1,number_of_states;%flag矩陣用于記錄網(wǎng)格圖中的某一列是否被訪問(wèn)過(guò)if i<=Lstep=2(L-i*k;%在網(wǎng)格圖的開(kāi)始處,并非所有的狀態(tài)都取到else %用step來(lái)說(shuō)明這個(gè)變化step=1; %狀態(tài)數(shù)從1到2到4,直到number_of_statesendfor j=0:step:number_of_states-1 %j表示寄存器的當(dāng)前狀態(tài)for t=0:2k-1 %t為當(dāng)前的輸入branch_metric=0; %用于記錄碼間距離binary_output=deci2bin(output(j+1,t+1,n;%將當(dāng)前狀態(tài)下輸入狀態(tài)t時(shí)的輸出output轉(zhuǎn)
10、為n位2進(jìn)制,以便計(jì)算碼間距離。(說(shuō)明:數(shù)組坐標(biāo)大小變化同上)for tt=1:n %計(jì)算實(shí)際的輸出碼同網(wǎng)格圖中此格某種輸出的碼間距離branch_metric=branch_metric+metric(channel_output_matrix(tt,i,binary_output(tt;end%選擇碼間距離較小的路徑,即當(dāng)下一個(gè)狀態(tài)沒(méi)有被訪問(wèn)時(shí)就直接賦值,否則,用比它小的將其覆蓋if (state_metric(nextstate(j+1,t+1+1,2>state_metric(j+1,1+branch_metric|flag(nextstate(j+1,t+1+1=0state_
11、metric(nextstate(j+1,t+1+1,2=state_metric(j+1,1+branch_metric;%下一狀態(tài)的漢明距離(臨時(shí)值)=當(dāng)前狀態(tài)的漢明距離(確定值)+碼間距離survivor_state(nextstate(j+1,t+1+1,i+1=j;%survivor_state數(shù)組的一維坐標(biāo)為下一個(gè)狀態(tài)值,二維坐標(biāo)為此狀態(tài)%在網(wǎng)格圖中的列位置,記錄的數(shù)值為當(dāng)前狀態(tài),這樣就可以從網(wǎng)格中某位置的%某個(gè)狀態(tài)得出其對(duì)應(yīng)上一個(gè)列位置的狀態(tài),從而能很方便的完成譯碼過(guò)程。flag(nextstate(j+1,t+1+1=1;%指示該狀態(tài)已被訪問(wèn)過(guò)endendendstate_me
12、tric=state_metric(:,2:-1:1;%移動(dòng)state_metric,將臨時(shí)值移為確定值end%開(kāi)始尾信道輸出的解碼for i=depth_of_trellis-L+2:depth_of_trellisflag=zeros(1,number_of_states;%狀態(tài)數(shù)從number_of_statesnumber_of_states/221%程序說(shuō)明同上,只不過(guò)輸入矢量只為0last_stop=number_of_states/(2(i-depth_of_trellis+L-2*k;for j=0:last_stop-1branch_metric=0;binary_outpu
13、t=deci2bin(output(j+1,1,n;for tt=1:nbranch_metric=branch_metric+metric(channel_output_matrix(tt,i,binary_output(tt;endif (state_metric(nextstate(j+1,1+1,2>state_metric(j+1,1+branch_metric|flag(nextstate(j+1,1+1=0state_metric(nextstate(j+1,1+1,2=state_metric(j+1,1+branch_metric;survivor_state(next
14、state(j+1,1+1,i+1=j;flag(nextstate(j+1,1+1=1;endendstate_metric=state_metric(:,2:-1:1;end%從最優(yōu)路徑產(chǎn)生解碼輸出 %譯碼過(guò)程可從數(shù)組survivor_state的最后一個(gè)位置逐級(jí)向前譯碼%由段得到狀態(tài)序列,再由狀序列從input矩陣中得到該段的輸出%數(shù)組survivor_state的最后的輸出狀態(tài)肯定為“0”state_sequence=zeros(1,depth_of_trellis+1;size(state_sequence;state_sequence(1,depth_of_trellis=surv
15、ivor_state(1,depth_of_trellis+1;%逐級(jí)譯碼過(guò)程for i=1:depth_of_trellisstate_sequence(1,depth_of_trellis-i+1=survivor_state(state_sequence(1,depth_of_trellis+2-i+1,depth_of_trellis-i+2;%由后向前endstate_sequence;decoder_output_matrix=zeros(k,depth_of_trellis-L+1;for i=1:depth_of_trellis-L+1dec_output_deci=input(state_sequence(1,i+1,state_sequence(1,i+1+1;%根據(jù)數(shù)組input的定義來(lái)得出從當(dāng)前狀態(tài)到下一個(gè)狀態(tài)的輸入信號(hào)矢量dec_output_bin=deci2bin(dec_output_deci,k;%轉(zhuǎn)換成2進(jìn)制信號(hào)decoder_output_matrix(:,i=dec_output_bin(k:-1:1'%將每一次譯碼存入譯碼輸出矩陣decoder_output_m
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2012建筑租賃合同范本
- 人防租賃轉(zhuǎn)讓合同范本
- 分項(xiàng)勞務(wù)合同范本
- 加盟銷售合同范例
- 人情補(bǔ)償寫(xiě)合同范本
- 出租車司機(jī)加盟合同范本
- 2025年中國(guó)恒轉(zhuǎn)矩變頻器行業(yè)市場(chǎng)深度研究及投資戰(zhàn)略規(guī)劃報(bào)告
- 上海建筑施工合同范本
- 2025年中國(guó)工業(yè)防水插座行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 公司聯(lián)營(yíng)股合同范本
- 中國(guó)氫內(nèi)燃機(jī)行業(yè)發(fā)展環(huán)境、市場(chǎng)運(yùn)行格局及前景研究報(bào)告-智研咨詢(2024版)
- 開(kāi)學(xué)季初三沖刺中考開(kāi)學(xué)第一課為夢(mèng)想加油課件
- 《自然保護(hù)區(qū)劃分》課件
- 2025年普通卷釘項(xiàng)目可行性研究報(bào)告
- 中日合同范本
- T-CARM 002-2023 康復(fù)醫(yī)院建設(shè)標(biāo)準(zhǔn)
- 《康復(fù)按摩知識(shí)》課件
- 立式加工中心說(shuō)明書(shū)
- 唐太宗李世民
- 作文紙格子信紙
- 第八版神經(jīng)病學(xué)配套課件-12-中樞神經(jīng)系統(tǒng)感染性疾病
評(píng)論
0/150
提交評(píng)論