资源简介
这个程序详细解释了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_
- 上一篇:LMS 自适应滤波的 C 语言源代码
- 下一篇:关于五三整数小波变换wavlet
评论
共有 条评论