• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: viterbi  

资源简介

这个程序详细解释了VITERBI程序的流程和结果,对GSM\CDMA信号卷积译码提供参考

资源截图

代码片段和文件信息


c1=[1 1 1];
c2=[1 0 1];
%生成转移码表和输出码表
%设转移码表是state_shift(28);其中state_shift(11)与state_shift(21)表示在状态S1下输入0和1的转移
%矩阵。state设置为1 2 3 4 5 6 7 8(3个寄存器);
%设当前状态是K,那么输入0的下一状态是:reg(bitshift-1)输入1的下一状态是reg(bitshift-1)+2^2;
%于是转移状态矩阵是:
temp=0;
for i=1:8;
    state_shift(1i)=bitshift((i-1)-1)+1;
    y=deci2bin(i-131);
    temp=y(11);
    for j=2:3;
       temp=xor(tempy(1j));
    end 
    state_out(1i)=temp;
    temp=y(11);
    state_out(2i)=xor(tempy(13));
    state_shift(2i)=bitshift((i-1)-1)+5;
end
%            1     2     3     4     5     6     7     8
%           1  5  1  5  2 6   2 6   3  7  3  7  4 8   4 8
%输出:     0  0  1  1  1 0   0  1  1  1  0  0  0  1  1  0
% 前一状态  1  2  3  4  5 6   7  8  1 2  3  4  5  6   7  8
%那么已知当前状态K,求其前一状态是:去搜索state_out(1,i)与state_out(2,i)看其等于几。
%计算状态转移输入矩阵。
cnt=1;
 for k=1:8;
    for i=1:8;
       for j=1:2;
           if state_shift(ji)==k;
               state_ad(cntk)=i;
               cnt=cnt+1;
               if cnt==3;
                   cnt=1;
               end
           end
       end
    end 
 end 
 %假设输出是[11 01 01 11 11 01]
% t0时刻:
receive=[1 1 1 0 1 1 1 1 1 0 1 1];
weight(11:8)=0;
% t1 时刻 weight1(11:8)=[2 0 1 1 0 2 1 1]
% t2时刻  weight2(11:8)=[1 1 2 0 1 1 0 2],
%而这这个时刻,假设每种状态都可能由上两种状态转移而来。设为weight_ad(1K)与weight_ad(2K);
%那么weight_ad(11)=在T1时刻weight1(1state_ad(11));weight_ad(21)=weight1(1st
%ate_ad(21));同样得到weight_ad(1,1:8)与weight_ad(2,1:8);
%比较weight_ad(1:)与weight_

评论

共有 条评论