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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? viterbi_2_1_3.m

?? 實現(2
?? M
字號:
function [mybit,decoder_output_table,BER,right_channel_output,channel_output_table,cumulated_metric_table,survivor_state]=viterbi_2_1_3
changdu=input('Please input the length of the code sequence\n\n');   
mybit=fix(rand(1,changdu)+0.5);

%  (2,1,3)卷積編碼
G=[1 1 1;1 0 1];                                                                          %  (2,1,3)生成矩陣G=[1 1 1;1 0 1]; 
k=1;
right_channel_output=cnv_encd(mybit);
lgth=length(right_channel_output);
BER=zeros(1,lgth);
cumulated_metric_table=zeros(1,lgth);
decoder_output_table=zeros(lgth,lgth/2-2);
channel_output_table=zeros(lgth,lgth);

%  模擬信道誤碼
for z=1:lgth                                                                             % 產生隨機誤碼                                                                           

%    channel=zeros(1,lgth);                                                              % 通過改變lgth的值 ,調整誤碼個數                                                 
%    for i=1:z:lgth
%        channel(i)=1;
%    end

if z==1
   channel=zeros(1,lgth);  
else
    channel=fix(rand(1,lgth)+0.2);                                                       % 0.5可改
end
channel_output=mod(right_channel_output+channel,2);
channel_output_table(z,:)=channel_output;                                                % 數據轉移
n=size(G,1);                                                                             % n=G的行數     

%  檢查大小
if rem(size(G,2),k)~=0
    error('Size of G and k do not agree')                                                % 存在合理的約束長度
end
if rem(size(channel_output,2),n)~=0
    error('channel output not of the right size')                                        % 經過信道后,進入譯碼器前,卷積編碼的個數合理
end
L=size(G,2)/k;                                                                           % 約束長度=寄存器個數+1
number_of_states=2^((L-1)*k);                                                            % 狀態數

%  產生狀態轉移矩陣、輸出矩陣和輸入矩陣
for j=0:number_of_states-1                                                               % 對(2,1,3) j=0,1,2,3
    for l=0:2^k-1                                                                        % l=0,1
        [next_state,memory_contents]=nxt_stat(j,l,L,k);
        input(j+1,next_state+1)=l;
        branch_output=rem(memory_contents*G',2);                                         % 狀態圖上根據寄存器狀態和input作出的編碼
        nextstate(j+1,l+1)=next_state;                                                   % 生成矩陣,含有十進制表示的下一狀態
        output(j+1,l+1)=bin2deci(branch_output);                                         % 生成矩陣,含有十進制表示的卷積編碼
    end
end
state_metric=zeros(number_of_states,2);                                                  % 4行,2列 (初始化)
depth_of_trellis=length(channel_output)/n;                                               % 需要譯碼的個數   設為6
channel_output_matrix=reshape(channel_output,n,depth_of_trellis);                        % 將經過信道的編碼序列轉換為以需要譯碼的個數為行數,以n為列數的矩陣
survivor_state=zeros(number_of_states,depth_of_trellis+1);                               % 4行,7列 (初始化)

%  開始無尾信道輸出解碼
for i=1:depth_of_trellis-L+1                                                             % i=1,2,3,4
    flag=zeros(1,number_of_states);                                                      % 1行,4列 (初始化)
    if i<=L
        step=2^((L-i)*k);                                                                % i=1,2,3  step= 4,2,1
    else
        step=1;                                                                          % i=4  step=1
    end
    for j=0:step:number_of_states-1                                                      % i=1 j=0;i=2 j=0, 2;i=3,4 j=0,1,2,3 
        for l=0:2^k-1                                                                    % l=0,1
            branch_metric=0;                                                             % 初始化
            binary_output=deci2bin(output(j+1,l+1),n);                                   % 將此時刻十進制的編碼結果用二進制表示
            for ll=1:n                                                                   % ll=1,2
                branch_metric=branch_metric+metric(channel_output_matrix(ll,i),...
                    binary_output(ll));                                                  % 將此時刻經過信道的編碼與理論編碼比較,得到分支度量值
            end
            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)
                state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_metric;
                survivor_state(nextstate(j+1,l+1)+1,i+1)=j;
                flag(nextstate(j+1,l+1)+1)=1;
            end
        end
    end
    state_metric=state_metric(:,2:-1:1);
end

%  開始有尾信道輸出解碼
for i=depth_of_trellis-L+2:depth_of_trellis
    flag=zeros(1,number_of_states);
    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

%  從最佳路徑中產生解碼
state_sequence=zeros(1,depth_of_trellis+1);
state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1);
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
decoder_output_matrix=zeros(k,depth_of_trellis-L+1);
for i=1:depth_of_trellis-L+1
    dec_output_deci=input(state_sequence(1,i)+1,state_sequence(1,i+1)+1);
    dec_output_bin=deci2bin(dec_output_deci,k);
    decoder_output_matrix(:,i)=dec_output_bin(k:-1:1)';
end
decoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis-L+1));
decoder_output_table(z,:)=decoder_output;                                                % 數據轉移
cumulated_metric=state_metric(1,1);
cumulated_metric_table(z)=cumulated_metric;                                              % 數據轉移
BER(z)=Bit_Error_Rate(mybit,decoder_output);
%  BER1(z)=Bit_Error_Rate(right_channel_output,channel_output)
end

%----------------------------------------subfunction Bit_Error_Rate-------------------------------------------------

function y=Bit_Error_Rate(a,b)
y=nnz(mod(a+b,2))/length(a);

%-------------------------------------------subfunction cnv_encd----------------------------------------------------

function the_output1=cnv_encd(mybit)       %  the_output1為完全正確譯碼,編碼輸出結果多出2*移位寄存器個數;  the_output2為不完全譯碼,譯碼結果與編碼之前的原始信息差移位寄存器的個數
g=[1 1 1 0 1 1];
n=length(mybit);
juzhen=zeros(n,(n-1)*2+6);                 %  多余個數=2*約束長度-2=2*移位寄存器個數
for i=1:n
    juzhen(i,(i-1)*2+1:(i-1)*2+6)=g;
end
the_output=mybit*juzhen;
the_output=mod(the_output,2);
the_output1=the_output;                    %  需要時可以把分號去掉,看完全編碼和不完全編碼的結果
the_output2=the_output(1,1:n*2);




% survivor_state的每一行對應每一個狀態,每一列對應每一個時刻,它的數值為從前一時刻到這一時刻、進入到所在的行狀態所保留的幸存路徑的來源狀態   
% cumulated_metric為譯碼結果所對應的編碼序列與信道輸入含誤碼序列的漢明距離
               
            
                
                
                
            
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品123区| 日韩一区二区三区免费观看| 欧美揉bbbbb揉bbbbb| 日韩三级中文字幕| 亚洲天堂免费看| 蜜桃av噜噜一区二区三区小说| 91丝袜美女网| 久久久亚洲欧洲日产国码αv| 亚洲成人综合视频| www.99精品| 国产午夜亚洲精品不卡| 日本va欧美va瓶| 色一区在线观看| 国产精品入口麻豆九色| 激情六月婷婷综合| 欧美精品高清视频| 亚洲福利一区二区三区| 色综合久久久久综合体| 中文字幕不卡一区| 成人自拍视频在线| 国产亚洲欧美激情| 国产高清不卡一区二区| 欧美一区二区成人| 青椒成人免费视频| 91精品国产高清一区二区三区蜜臀 | 欧洲色大大久久| 一区二区三区美女视频| 不卡一卡二卡三乱码免费网站| 国产午夜亚洲精品午夜鲁丝片| 国模冰冰炮一区二区| 久久综合九色综合97婷婷| 久久99精品一区二区三区| 欧美成人一级视频| 国内精品国产成人国产三级粉色 | 蜜桃av一区二区在线观看| 欧美久久久久久蜜桃| 偷拍与自拍一区| 日韩欧美国产一二三区| 麻豆精品视频在线观看免费| 日韩久久久久久| 极品少妇一区二区| 久久久综合视频| 菠萝蜜视频在线观看一区| 亚洲欧美激情视频在线观看一区二区三区 | 黄一区二区三区| 久久久精品tv| 色综合久久久久综合体| 亚洲国产日产av| 日韩视频一区二区三区| 国产精品12区| 亚洲综合色婷婷| 日韩欧美国产精品| 成人国产精品免费观看| 一区二区三区日韩在线观看| 欧美绝品在线观看成人午夜影视| 日本伊人午夜精品| 中文字幕欧美国产| 欧美色中文字幕| 极品少妇xxxx精品少妇偷拍 | 久久色在线观看| proumb性欧美在线观看| 亚洲国产精品一区二区久久| 欧美一区二区日韩一区二区| 成人精品一区二区三区中文字幕| 亚洲一线二线三线视频| 精品噜噜噜噜久久久久久久久试看 | 日本系列欧美系列| 日本一区二区三级电影在线观看| 在线免费av一区| 久久99这里只有精品| |精品福利一区二区三区| 在线播放日韩导航| 不卡的电影网站| 蜜臀精品久久久久久蜜臀| 中文一区二区在线观看| 91精品国产综合久久精品图片 | 欧美精品aⅴ在线视频| 韩国av一区二区三区在线观看| 国产精品三级视频| 日韩精品一区二区三区在线观看| 97se亚洲国产综合自在线| 蜜臀久久久99精品久久久久久| 亚洲欧洲三级电影| 日韩美女一区二区三区四区| 在线免费观看一区| 9久草视频在线视频精品| 久久精品国产精品亚洲综合| 一区二区三区久久| 国产精品初高中害羞小美女文| 欧美一区二区播放| 欧美久久久一区| 色综合天天狠狠| 国产凹凸在线观看一区二区| 强制捆绑调教一区二区| 亚洲国产精品麻豆| 亚洲女女做受ⅹxx高潮| 中文字幕在线一区| 久久精品视频免费| 精品国产自在久精品国产| 欧美色成人综合| 在线观看欧美日本| 色婷婷av一区二区三区gif | 激情综合五月婷婷| 日韩不卡一区二区| 亚洲激情校园春色| 亚洲免费观看高清完整版在线| 国产精品无遮挡| 欧美国产综合色视频| 久久午夜电影网| 久久只精品国产| 精品国产乱码久久| 日韩精品资源二区在线| 日韩一区二区精品| 日韩一区二区电影网| 欧美一区二区三区视频免费| 555夜色666亚洲国产免| 宅男在线国产精品| 欧美一二三区在线| 久久伊人蜜桃av一区二区| 久久综合九色综合欧美亚洲| 2023国产精华国产精品| 久久久三级国产网站| 久久精品一区二区三区不卡牛牛| 色哟哟国产精品| 欧美日韩在线播放一区| 777色狠狠一区二区三区| 欧美日韩黄色一区二区| 91精品国产乱码| 亚洲久草在线视频| 亚洲综合色婷婷| 男女男精品网站| 国产一区二区三区四区五区入口 | 午夜欧美大尺度福利影院在线看| 亚洲国产你懂的| 美腿丝袜亚洲三区| 国产传媒久久文化传媒| 99国产精品国产精品毛片| 91国偷自产一区二区开放时间 | 日日夜夜免费精品| 秋霞成人午夜伦在线观看| 久久国产精品区| 成人午夜碰碰视频| 欧美在线色视频| 日韩欧美在线不卡| 国产欧美一区二区精品秋霞影院 | 国产欧美日韩在线观看| 亚洲天堂免费看| 美女在线视频一区| 成人三级伦理片| 欧美人妇做爰xxxⅹ性高电影| 欧美白人最猛性xxxxx69交| 国产欧美日韩在线看| 亚洲一区二区三区四区的| 麻豆精品久久久| 色呦呦日韩精品| 精品国产一区二区三区av性色| 日本vs亚洲vs韩国一区三区二区| 国产一区二区不卡在线| 91传媒视频在线播放| 欧美精品一区二区在线观看| 亚洲视频1区2区| 久久精品噜噜噜成人av农村| 97久久精品人人做人人爽| 日韩免费看的电影| 亚洲综合区在线| 国产麻豆日韩欧美久久| 欧美三级蜜桃2在线观看| 日本一区二区在线不卡| 美女视频黄 久久| 欧洲中文字幕精品| 久久综合中文字幕| 五月婷婷激情综合| 色综合一个色综合| 欧美经典一区二区| 美日韩一区二区三区| 日本高清视频一区二区| 中日韩av电影| 精品系列免费在线观看| 欧美肥妇bbw| 一区二区三区四区激情| 成人高清免费观看| 久久久影院官网| 国产一区二区视频在线播放| 制服丝袜亚洲网站| 午夜精品久久一牛影视| 色综合久久久网| 成人欧美一区二区三区1314| 国产精品自拍网站| 久久综合久久综合久久| 青青草国产精品97视觉盛宴| 717成人午夜免费福利电影| 亚洲电影一区二区| 欧美系列亚洲系列| 亚洲综合久久av| 91久久人澡人人添人人爽欧美| 美洲天堂一区二卡三卡四卡视频| 欧美日精品一区视频| 亚洲第一av色| 欧美久久一二区| 麻豆视频一区二区|