亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? viterbi.m

?? viterbi算法在matlab環(huán)境下的具體實(shí)現(xiàn)程序。
?? M
字號(hào):
function [decoder_output,survivor_state,cumulated_metric]=viterbi(G,k,channel_output)
%卷積碼的維特比譯碼函數(shù)
%VITERBI		卷積碼的維特比解碼器
%[decoder_ouput,survivor_state,cumulated_metric]=viterbi(G,k,channel_output)
%				G是一個(gè)n*Lk矩陣,該矩陣的每一行確
%				定了從移位記錯(cuò)器到第n個(gè)輸出間的連接,
%				是碼速率。
%				survivor_state是表示通過(guò)網(wǎng)絡(luò)的最佳路徑的矩陣。
%				量度在另一個(gè)函數(shù)metric(x,y)中給出,而且可根據(jù)
%				硬判決和軟判決來(lái)指定。
%				該算法最小化了量度而不是最大化似然
n=size(G,1);	%取出矩陣G的一維大小,即得出輸出端口
	%	檢查大小
if rem(size(G,2),k)~=0		%當(dāng)G列數(shù)不是k的整數(shù)倍時(shí)
   error('Size of G and k do not agree')		%發(fā)出出錯(cuò)信息
end
if rem(size(channel_output,2),n)~=0			%當(dāng)輸出量元素個(gè)數(shù)不是輸出端口的整數(shù)倍時(shí)
   error('Channel output not of the right size')		%發(fā)出出錯(cuò)信息
end
L=size(G,2)/k;			%得出移位數(shù),即寄存器的個(gè)數(shù)
	%		由于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);
	%	產(chǎn)生狀態(tài)轉(zhuǎn)移矩陣、輸出矩陣和輸入矩陣
for j=0:number_of_states-1		%j表示當(dāng)前寄存器組的狀態(tài)因?yàn)闋顟B(tài)是從零
   									%開(kāi)始的,所以循環(huán)從0到number_of_states-1
                              
      for l=0:2^k-1				%l為從k個(gè)輸入端的信號(hào)組成的狀態(tài),總的狀
                                 	%態(tài)數(shù)為2^k,所以循環(huán)從0到2^k-11
                                    
      %	nxt_stat完成從當(dāng)前的狀態(tài)和輸入的矢量得出下寄存器組的一個(gè)狀態(tài)
      [next_state,memory_contents]=nxt_stat(j,l,L,k);
            %	input數(shù)組值是用于記錄當(dāng)前狀態(tài)到下一個(gè)狀態(tài)所要的輸入信號(hào)矢量
      %  input數(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)值+1
      input(j+1,next_state+1)=l;	
      %	branch_output用于記錄在狀態(tài)j下輸入l時(shí)的輸出
      branch_output=rem(memory_contents*G',2);
      %	nextstate數(shù)組記錄了當(dāng)前狀態(tài)j下輸入l時(shí)的下一個(gè)狀態(tài)
      nextstate(j+1,l+1)=next_state;
      %	output數(shù)組記錄了當(dāng)前狀態(tài)j下輸入l時(shí)的輸出(十進(jìn)制)
      output(j+1,l+1)=bin2deci(branch_output);
   end
end
%		state_metric數(shù)組用于記錄譯碼過(guò)程在每狀態(tài)時(shí)的漢明距離
%		state_metric大小為number_of_states 2,(:,1)當(dāng)前
%		狀態(tài)位置的漢明距離,為確定值,而(:,2)為當(dāng)前狀態(tài)加輸入
%		得到的下一個(gè)狀態(tài)漢明距離,為臨時(shí)值
state_metric=zeros(number_of_states,2);
%		depth_of_trellis用于記錄網(wǎng)格圖的深度
depth_of_trellis=length(channel_output)/n;
%		輸出矩陣,每一列為一個(gè)輸出狀態(tài)
channel_output_matrix=reshape(channel_output,n,depth_of_trellis);
%		survivor_state描述譯碼過(guò)程中在網(wǎng)格圖中的路徑
survivor_state=zeros(number_of_states,depth_of_trellis+1);
%開(kāi)始無(wú)尾信道輸出的解碼
for i=1:depth_of_trellis-L+1	%i指示網(wǎng)格圖的深度
   %		flag矩陣用于記錄網(wǎng)格圖中的某一列是否被訪問(wèn)過(guò)
   flag=zeros(1,number_of_states);
   if i<=L
      step=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_states
   end
   for j=0:step:number_of_states-1		%j表示寄存器的當(dāng)前狀態(tài)
      for l=0:2^k-1					%l為當(dāng)前的輸入
         branch_metric=0;			%用于記錄碼間距離
         %		將當(dāng)前狀態(tài)下輸入狀態(tài)l時(shí)的輸出output轉(zhuǎn)為n位二進(jìn)制,以便
         %		計(jì)算碼間距離(說(shuō)明:數(shù)組坐標(biāo)大小變化同上)。
         binary_output=deci2bin(output(j+1,l+1),n);
         %		計(jì)算實(shí)際的輸出碼同網(wǎng)格圖中此格某種輸出的碼間距離
         for ll=1:n
            branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));
         end
         %		選擇碼間距離較小的那條路徑
         %		選擇方法:
         %				當(dāng)下一個(gè)狀態(tài)沒(méi)有被訪問(wèn)時(shí)就直接賦值,否則,用比它小的將其覆蓋
         if((state_metric(nextstate(j+1,l+1)+1,2)>state_metric(j+1,1)...
               +branch_metric)|flag(nextstate(j+1,l+1)+1)==0)
            %	下一個(gè)狀態(tài)的漢明距離(臨時(shí)值)=當(dāng)前狀態(tài)的漢明距離(確定值)+ 碼間距離
            state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_metric;
            %	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ò)程。
            survivor_state(nextstate(j+1,l+1)+1,i+1)=j;
            flag(nextstate(j+1,l+1)+1)=1;		%指示該狀態(tài)已被訪問(wèn)過(guò)
         end
      end
   end
   state_metric=state_metric(:,2:-1:1);		%移動(dòng)state_metric,將臨時(shí)值移為確定值
end
%開(kāi)始尾部信道輸出解碼
for i=depth_of_trellis-L+2:depth_of_trellis
   flag=zeros(1,number_of_states);
   %  狀態(tài)數(shù)從number_of_states→number_of_states/2→...→2→1
   %	程序說(shuō)明同上,只不過(guò)輸入矢量只為0
   last_stop=number_of_states/(2^((i-depth_of_trellis+L-2)*k));
   for j=0:last_stop-1
      branch_metric=0;
      binary_output=deci2bin(output(j+1,1),n);
      for ll=1:n
         branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));
      end
      if((state_metric(nextstate(j+1,1)+1,2)>state_metric(j+1,1)...
            +branch_metric)|flag(nextstate(j+1,1)+1)==0)
         state_metric(nextstate(j+1,1)+1,2)=state_metric(j+1,1)+branch_metric;
         survivor_state(nextstate(j+1,1)+1,i+1)=j;
         flag(nextstate(j+1,1)+1)=1;
      end
   end
   state_metric=state_metric(:,2:-1:1);
end
%	從最佳路徑中產(chǎn)生解碼
%	譯碼過(guò)程可從數(shù)組survivor_state的最后一個(gè)位置向前逐級(jí)譯碼
state_sequence=zeros(1,depth_of_trellis+1);
%	survivor_state數(shù)組的最后的輸出狀態(tài)肯定是“0”
state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1);
%	逐級(jí)譯碼過(guò)程
for i=1:depth_of_trellis
   state_sequence(1,depth_of_trellis-i+1)=survivor_state((state_sequence(1,depth_of_trellis+2-i)...
      +1),depth_of_trellis-i+2);
end
decorder_output_matrix=zeros(k,depth_of_trellis-L+1);
for i=1:depth_of_trellis-L+1
   %		根據(jù)數(shù)組input的定義來(lái)得出從當(dāng)前狀態(tài)到下一個(gè)狀態(tài)的輸入信號(hào)矢量
   dec_output_deci=input(state_sequence(1,i)+1,state_sequence(1,i+1)+1);
   %		轉(zhuǎn)成二進(jìn)制信號(hào)
   dec_output_bin=deci2bin(dec_output_deci,k);
   %		將一次譯碼存入譯碼輸出矩陣decoder_output_matrix相應(yīng)的位置
   decoder_output_matrix(:,i)=dec_output_bin(k:-1:1)';
end
%		按照一維序列形式重新組織輸出
decoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis-L+1));
%		state_metric為網(wǎng)格圖最后一個(gè)列位置中“0”狀態(tài)位置的漢明距
%		離,這個(gè)值就是整個(gè)譯碼過(guò)程中的漢明距離。
cumulated_metric=state_metric(1,1);
%卷積碼的維特比譯碼函數(shù)

%nxt_stat.m 記錄狀態(tài)函數(shù)
%		next_state用于記錄下一個(gè)狀態(tài)的值
%		memory_contents用于記錄
function [next_state,memory_contents]=nxt_stat(current_state,input,L,k)
	%	將當(dāng)前狀態(tài)值(十進(jìn)制)轉(zhuǎn)成位數(shù)為k*(L-1)的二進(jìn)制
binary_state=deci2bin(current_state,k*(L-1));
	%	將輸入狀態(tài)值(十進(jìn)制)轉(zhuǎn)成位數(shù)為k的二進(jìn)制序列
binary_input=deci2bin(input,k);
	%	寄存器組的下一個(gè)狀態(tài)值(二進(jìn)制)
next_state_binary=[binary_input,binary_state(1:(L-2)*k)];
	%	將寄存器組的下一個(gè)狀態(tài)值(二進(jìn)制)轉(zhuǎn)成十進(jìn)制
next_state=bin2deci(next_state_binary);
	%	用memory_contents來(lái)記錄各個(gè)寄存器在下一個(gè)狀態(tài)下的信息(二進(jìn)制)
	%	以便與生成矩陣相乘得出輸出
memory_contents=[binary_input,binary_state];
%nxt_stat.m 記錄狀態(tài)函數(shù)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一级在线| 日本一区二区不卡视频| 天堂一区二区在线| 欧美美女激情18p| 日韩高清一级片| 欧美电影免费提供在线观看| 麻豆一区二区三| 欧美精品一区二区高清在线观看| 精东粉嫩av免费一区二区三区| 亚瑟在线精品视频| 欧美日韩精品综合在线| 日本不卡的三区四区五区| 欧美一级在线观看| 国产成人综合自拍| 亚洲欧美日韩国产一区二区三区| 国产免费成人在线视频| 91网站在线观看视频| 午夜电影网一区| 26uuu国产一区二区三区| 国产成人一区在线| 亚洲黄色小视频| 91精品国产一区二区三区| 国产一区二区三区黄视频 | 五月婷婷欧美视频| 2021国产精品久久精品| 99久久久久久| 视频一区国产视频| 国产日本欧洲亚洲| 在线免费观看视频一区| 美国av一区二区| 亚洲精品成人精品456| 欧美videos大乳护士334| av不卡免费在线观看| 日本美女一区二区| 国产精品成人一区二区三区夜夜夜 | 午夜欧美视频在线观看| 久久久99精品免费观看| 欧美色综合网站| 国产.欧美.日韩| 天堂午夜影视日韩欧美一区二区| 国产女人水真多18毛片18精品视频| 欧洲一区二区三区在线| 懂色av一区二区夜夜嗨| 免费看精品久久片| **欧美大码日韩| 精品国产一区二区国模嫣然| 91蜜桃传媒精品久久久一区二区| 国产精品久久久久久久第一福利 | 婷婷综合久久一区二区三区| 国产视频一区在线观看| 欧美午夜电影一区| 国产v综合v亚洲欧| 亚洲影视在线观看| 欧美激情中文字幕一区二区| 欧美二区乱c少妇| 97aⅴ精品视频一二三区| 蜜臀精品久久久久久蜜臀| 中文成人av在线| 日韩限制级电影在线观看| 91视频一区二区三区| 国产一区视频在线看| 亚洲444eee在线观看| 日韩伦理电影网| 制服丝袜国产精品| 欧美美女一区二区在线观看| 99久久夜色精品国产网站| 精品在线视频一区| 亚洲永久精品大片| 17c精品麻豆一区二区免费| 精品少妇一区二区三区日产乱码| 国产农村妇女精品| 精品国精品国产| 欧美日韩精品一区二区天天拍小说| 国产激情视频一区二区三区欧美 | 欧美一区永久视频免费观看| 91小宝寻花一区二区三区| 国产精品18久久久久| 美女一区二区久久| 亚洲国产精品久久久男人的天堂| 亚洲国产成人午夜在线一区| 精品美女在线观看| 欧美一区二区在线视频| 欧美手机在线视频| 91官网在线免费观看| 懂色av一区二区夜夜嗨| 中文字幕中文乱码欧美一区二区| 久久影视一区二区| 久久人人爽人人爽| 精品福利一区二区三区免费视频| 91精品国产综合久久久久久| 亚洲猫色日本管| 亚洲综合自拍偷拍| 一区二区成人在线视频| 一本色道a无线码一区v| 亚洲综合小说图片| 亚洲视频一区二区免费在线观看| 国产精品理论片在线观看| 99久久精品免费看国产免费软件| 高清在线成人网| 国产91综合网| 99亚偷拍自图区亚洲| 不卡av免费在线观看| 99re热视频精品| 成人高清视频在线| 国产日韩欧美精品电影三级在线| 国产成人免费视频网站高清观看视频| 久久精品国产秦先生| 国产乱色国产精品免费视频| 综合久久久久久| 一区二区三区久久| 天堂成人免费av电影一区| 免费欧美高清视频| 国产精品一区二区果冻传媒| 91精品办公室少妇高潮对白| 欧美日韩国产首页| 精品久久久久久综合日本欧美| 久久久91精品国产一区二区三区| 国产精品久久久久久久久免费桃花 | 丁香亚洲综合激情啪啪综合| 成人av网站免费| 91黄色在线观看| 欧美一三区三区四区免费在线看 | 制服丝袜亚洲色图| 久久一二三国产| 国产精品久久久久久久久免费相片 | 一区二区三区精品在线| 亚洲18女电影在线观看| 极品瑜伽女神91| 97精品国产97久久久久久久久久久久| 欧美视频日韩视频在线观看| 欧美xxxxx裸体时装秀| 中文字幕精品一区| 日韩主播视频在线| 国产99精品在线观看| 欧美系列一区二区| 久久久国产午夜精品| 亚洲免费观看高清| 国内精品国产成人国产三级粉色| 不卡免费追剧大全电视剧网站| 欧美妇女性影城| 亚洲国产精品成人综合| 午夜精品一区二区三区电影天堂 | 久久伊人蜜桃av一区二区| 一区二区欧美国产| 国产一区二区导航在线播放| 一本一道久久a久久精品| 26uuu国产一区二区三区| 一区二区三区不卡视频| 国产一区二区电影| 欧美理论在线播放| 亚洲天堂网中文字| 激情小说欧美图片| 欧美日韩一卡二卡| 亚洲视频中文字幕| 国产精一区二区三区| 91麻豆精品91久久久久同性| 日韩视频在线一区二区| 亚洲电影第三页| 99re热这里只有精品视频| 精品成人免费观看| 午夜精品免费在线| 欧美亚洲丝袜传媒另类| 中文字幕乱码久久午夜不卡| 精品亚洲成a人| 制服丝袜激情欧洲亚洲| 夜夜嗨av一区二区三区四季av| 国产乱码精品一区二区三区五月婷| 在线影视一区二区三区| 1000部国产精品成人观看| 国产激情精品久久久第一区二区| 欧美精品精品一区| 亚洲精品免费在线| 99天天综合性| 国产精品久久久久久久久免费樱桃 | 欧美日韩精品欧美日韩精品一| 日韩一区二区电影在线| 日本欧美一区二区三区乱码 | 在线观看91精品国产麻豆| 亚洲精品成人悠悠色影视| 91免费国产在线观看| **性色生活片久久毛片| 成人久久视频在线观看| 欧美激情在线一区二区三区| 国产成人综合在线观看| 久久久久99精品一区| 国产高清亚洲一区| 久久久欧美精品sm网站| 国产一区二区三区观看| 久久久久久久av麻豆果冻| 国模娜娜一区二区三区| 国产精品人人做人人爽人人添| 国产精品综合av一区二区国产馆| 欧美精品一区二区三区高清aⅴ | 国产精品国产精品国产专区不蜜 | 日韩精品一区二| 国产美女在线观看一区| 欧美不卡一区二区| 久久99国内精品| 国产日韩欧美在线一区| 大桥未久av一区二区三区中文|