📄 viterbi.m
字号:
[a(25),s]=min([aa(13)+y_SI_SO(1),aa(30)+y_SI_SO(3)]);
if s==1
b(25,z) = 13;
else
b(25,z) = 30;
end
[a(26),s]=min([aa(59)+y_SI_SO(2),aa(44)+y_SI_SO(4)]);
if s==1
b(26,z) = 59;
else
b(26,z) = 44;
end
[a(27),s]=min([aa(14)+y_SI_SO(1),aa(29)+y_SI_SO(3)]);
if s==1
b(27,z) = 14;
else
b(27,z) = 29;
end
[a(28),s]=min([aa(60)+y_SI_SO(2),aa(43)+y_SI_SO(4)]);
if s==1
b(28,z) = 60;
else
b(28,z) = 43;
end
[a(29),s]=min([aa(15)+y_SI_SO(1),aa(32)+y_SI_SO(3)]);
if s==1
b(29,z) = 15;
else
b(29,z) = 32;
end
[a(30),s]=min([aa(57)+y_SI_SO(2),aa(42)+y_SI_SO(4)]);
if s==1
b(30,z) = 57;
else
b(30,z) = 42;
end
[a(31),s]=min([aa(16)+y_SI_SO(1),aa(31)+y_SI_SO(3)]);
if s==1
b(31,z) = 16;
else
b(31,z) = 31;
end
[a(32),s]=min([aa(58)+y_SI_SO(2),aa(41)+y_SI_SO(4)]);
if s==1
b(32,z) = 58;
else
b(32,z) = 41;
end
[a(33),s]=min([aa(17)+y_SI_SO(1),aa(2)+y_SI_SO(3)]);
if s==1
b(33,z) = 17;
else
b(33,z) = 2;
end
[a(34),s]=min([aa(39)+y_SI_SO(2),aa(56)+y_SI_SO(4)]);
if s==1
b(34,z) = 39;
else
b(34,z) = 56;
end
[a(35),s]=min([aa(18)+y_SI_SO(1),aa(1)+y_SI_SO(3)]);
if s==1
b(35,z) = 18;
else
b(35,z) = 1;
end
[a(36),s]=min([aa(40)+y_SI_SO(2),aa(55)+y_SI_SO(4)]);
if s==1
b(36,z) = 40;
else
b(36,z) = 55;
end
[a(37),s]=min([aa(19)+y_SI_SO(1),aa(4)+y_SI_SO(3)]);
if s==1
b(37,z) = 19;
else
b(37,z) = 4;
end
[a(38),s]=min([aa(37)+y_SI_SO(2),aa(54)+y_SI_SO(4)]);
if s==1
b(38,z) = 37;
else
b(38,z) = 54;
end
[a(39),s]=min([aa(20)+y_SI_SO(1),aa(3)+y_SI_SO(3)]);
if s==1
b(39,z) = 20;
else
b(39,z) = 3;
end
[a(40),s]=min([aa(38)+y_SI_SO(2),aa(53)+y_SI_SO(4)]);
if s==1
b(40,z) = 38;
else
b(40,z) = 53;
end
[a(41),s]=min([aa(21)+y_SI_SO(1),aa(6)+y_SI_SO(3)]);
if s==1
b(41,z) = 21;
else
b(41,z) = 6;
end
[a(42),s]=min([aa(35)+y_SI_SO(2),aa(52)+y_SI_SO(4)]);
if s==1
b(42,z) = 35;
else
b(42,z) = 52;
end
[a(43),s]=min([aa(22)+y_SI_SO(1),aa(5)+y_SI_SO(3)]);
if s==1
b(43,z) = 22;
else
b(43,z) = 5;
end
[a(44),s]=min([aa(36)+y_SI_SO(2),aa(51)+y_SI_SO(4)]);
if s==1
b(44,z) = 36;
else
b(44,z) = 51;
end
[a(45),s]=min([aa(23)+y_SI_SO(1),aa(8)+y_SI_SO(3)]);
if s==1
b(45,z) = 23;
else
b(45,z) = 8;
end
[a(46),s]=min([aa(33)+y_SI_SO(2),aa(50)+y_SI_SO(4)]);
if s==1
b(46,z) = 33;
else
b(46,z) = 50;
end
[a(47),s]=min([aa(24)+y_SI_SO(1),aa(7)+y_SI_SO(3)]);
if s==1
b(47,z) = 24;
else
b(47,z) = 7;
end
[a(48),s]=min([aa(34)+y_SI_SO(2),aa(49)+y_SI_SO(4)]);
if s==1
b(48,z) = 34;
else
b(48,z) = 49;
end
[a(49),s]=min([aa(25)+y_SI_SO(1),aa(10)+y_SI_SO(3)]);
if s==1
b(49,z) = 25;
else
b(49,z) = 10;
end
[a(50),s]=min([aa(47)+y_SI_SO(2),aa(64)+y_SI_SO(4)]);
if s==1
b(50,z) = 47;
else
b(50,z) = 64;
end
[a(51),s]=min([aa(26)+y_SI_SO(1),aa(9)+y_SI_SO(3)]);
if s==1
b(51,z) = 26;
else
b(51,z) = 9;
end
[a(52),s]=min([aa(48)+y_SI_SO(2),aa(63)+y_SI_SO(4)]);
if s==1
b(52,z) = 48;
else
b(52,z) = 63;
end
[a(53),s]=min([aa(27)+y_SI_SO(1),aa(12)+y_SI_SO(3)]);
if s==1
b(53,z) = 27;
else
b(53,z) = 12;
end
[a(54),s]=min([aa(45)+y_SI_SO(2),aa(62)+y_SI_SO(4)]);
if s==1
b(54,z) = 45;
else
b(54,z) = 62;
end
[a(55),s]=min([aa(28)+y_SI_SO(1),aa(11)+y_SI_SO(3)]);
if s==1
b(55,z) = 28;
else
b(55,z) = 11;
end
[a(56),s]=min([aa(46)+y_SI_SO(2),aa(61)+y_SI_SO(4)]);
if s==1
b(56,z) = 46;
else
b(56,z) = 61;
end
[a(57),s]=min([aa(29)+y_SI_SO(1),aa(14)+y_SI_SO(3)]);
if s==1
b(57,z) = 29;
else
b(57,z) = 14;
end
[a(58),s]=min([aa(43)+y_SI_SO(2),aa(60)+y_SI_SO(4)]);
if s==1
b(58,z) = 43;
else
b(58,z) = 60;
end
[a(59),s]=min([aa(30)+y_SI_SO(1),aa(13)+y_SI_SO(3)]);
if s==1
b(59,z) = 30;
else
b(59,z) = 13;
end
[a(60),s]=min([aa(44)+y_SI_SO(2),aa(59)+y_SI_SO(4)]);
if s==1
b(60,z) = 44;
else
b(60,z) = 59;
end
[a(61),s]=min([aa(31)+y_SI_SO(1),aa(16)+y_SI_SO(3)]);
if s==1
b(61,z) = 31;
else
b(61,z) = 16;
end
[a(62),s]=min([aa(41)+y_SI_SO(2),aa(58)+y_SI_SO(4)]);
if s==1
b(62,z) = 41;
else
b(62,z) = 58;
end
[a(63),s]=min([aa(32)+y_SI_SO(1),aa(15)+y_SI_SO(3)]);
if s==1
b(63,z) = 32;
else
b(63,z) = 15;
end
[a(64),s]=min([aa(42)+y_SI_SO(2),aa(57)+y_SI_SO(4)]);
if s==1
b(64,z) = 42;
else
b(64,z) = 57;
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[F,II]=min(a); %反向搜索,求出生存路径。
access(LD)=II;
for ii=LD-1:-1:1
access(ii)=b(access(ii+1),ii+1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for ii=1:LD %查表及硬判决。wq 按照幸存路径判决
kk=(j-1)*LD;
if ii==1
if j==1
if access(ii)==1
bits(1)=0;
else
bits(1)=1;
end
else
if(gg<=32)
g=access(ii)-1;
if(g==2*(gg-1))
bits(ii+kk)=0;
else
bits(ii+kk)=1;
end
else
k=gg-access(ii);
if((gg<=48)&(k>=9))|((gg>=49)&(k<=22))
bits(ii+kk)=1;
else
bits(ii+kk)=0;
end
end
end
else
if(access(ii-1)<=32)
g=access(ii)-1;
gg=access(ii-1)-1;
if(g==2*gg)
bits(ii+kk)=0;
else
bits(ii+kk)=1;
end
else
k=access(ii-1)-access(ii);
if((access(ii-1)<=48)&(k>=9))|((access(ii-1)>=49)&(k<=22))
bits(ii+kk)=1;
else
bits(ii+kk)=0;
end
end
end
end
gg=access(LD);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -