📄 my_trellis_decode.m
字号:
function my_Trellis_decode()
% data_Trellis_Dibit = [1,0,3,3,2,3,1,0,3,0,1,0,2,1,0,0,3,3,0,0,3,3,0,0,3,0,0,3,2,1,1,1,2,3,2,1,2,3,2,3,1,2,2,3,1,2,2,3,1,2,2,2,1,1,1,3,3,1,1,2,3,1,1,0,0,1,1,0,0,1,1,0,0,1,1,2,2,3,0,1,2,2,1,2,2,2,1,3,1,2,1,3,1,2,1,3,1,2];
data_Trellis_Dibit = [0,2,3,1,0,3,0,2,3,3,3,1,0,2,3,3,2,0,0,3,3,3,0,2,3,2,0,2,2,1,0,2,0,2,0,2,2,3,0,2,0,2,1,2,2,2,0,2,0,2,3,1,0,3,0,2,1,3,0,2,3,2,0,2,3,2,2,0,3,1,0,2,0,2,0,2,2,0,0,2,2,2,0,2,0,2,1,3,1,1,1,2,2,3,0,2,3,1];
data_Enc_Dibit = zeros(98,1);
data_Enc_Dibit(1:8:98) = data_Trellis_Dibit(1:2:26);
data_Enc_Dibit(2:8:98) = data_Trellis_Dibit(2:2:26);
data_Enc_Dibit(3:8:98) = data_Trellis_Dibit(27:2:50);
data_Enc_Dibit(4:8:98) = data_Trellis_Dibit(28:2:50);
data_Enc_Dibit(5:8:98) = data_Trellis_Dibit(51:2:74);
data_Enc_Dibit(6:8:98) = data_Trellis_Dibit(52:2:74);
data_Enc_Dibit(7:8:98) = data_Trellis_Dibit(75:2:98);
data_Enc_Dibit(8:8:98) = data_Trellis_Dibit(76:2:98);
data_Enc_Input = data_Enc_Dibit';
for ii = 1:98
switch data_Enc_Input(ii)
case (0)
data_Enc_Input_New(ii) = +1;
case (2)
data_Enc_Input_New(ii) = -1;
case (3)
data_Enc_Input_New(ii) = -3;
case (1)
data_Enc_Input_New(ii) = +3;
end
end
data_Enc_Input_New = data_Enc_Input_New';
data_con_map = zeros(49,2);
data_con_map(:,1) = data_Enc_Input_New(1:2:length(data_Enc_Input_New));
data_con_map(:,2) = data_Enc_Input_New(2:2:length(data_Enc_Input_New));
Dibit_Map_Table = [...
+1 -1; ...
-1 -1; ...
+3 -3; ...
-3 -3; ...
-3 -1; ...
+3 -1; ...
-1 -3; ...
+1 -3; ...
-3 +3; ...
+3 +3; ...
-1 +1; ...
+1 +1; ...
+1 +3; ...
-1 +3; ...
+3 +1; ...
-3 +1];
data_con2 = 0;
for h = 1:49
if data_con_map(h,:) == Dibit_Map_Table(1,:)
data_con1 = 0;
elseif data_con_map(h,:) == Dibit_Map_Table(2,:)
data_con1 = 1;
elseif data_con_map(h,:) == Dibit_Map_Table(3,:)
data_con1 = 2;
elseif data_con_map(h,:) == Dibit_Map_Table(4,:)
data_con1 = 3;
elseif data_con_map(h,:) == Dibit_Map_Table(5,:)
data_con1 = 4;
elseif data_con_map(h,:) == Dibit_Map_Table(6,:)
data_con1 = 5;
elseif data_con_map(h,:) == Dibit_Map_Table(7,:)
data_con1 = 6;
elseif data_con_map(h,:) == Dibit_Map_Table(8,:)
data_con1 = 7;
elseif data_con_map(h,:) == Dibit_Map_Table(9,:)
data_con1 = 8;
elseif data_con_map(h,:) == Dibit_Map_Table(10,:)
data_con1 = 9;
elseif data_con_map(h,:) == Dibit_Map_Table(11,:)
data_con1 = 10;
elseif data_con_map(h,:) == Dibit_Map_Table(12,:)
data_con1 = 11;
elseif data_con_map(h,:) == Dibit_Map_Table(13,:)
data_con1 = 12;
elseif data_con_map(h,:) == Dibit_Map_Table(14,:)
data_con1 = 13;
elseif data_con_map(h,:) == Dibit_Map_Table(15,:)
data_con1 = 14;
elseif data_con_map(h,:) == Dibit_Map_Table(16,:)
data_con1 = 15;
end
data_con2 = [data_con2 data_con1];
end
data_con_de = data_con2(2:length(data_con2));
State_Trans_Table = [ 0 8 4 12 2 10 6 14; ...
4 12 2 10 6 14 0 8; ...
1 9 5 13 3 11 7 15; ...
5 13 3 11 7 15 1 9; ...
3 11 7 15 1 9 5 13; ...
7 15 1 9 5 13 3 11; ...
2 10 6 14 0 8 4 12; ...
6 14 0 8 4 12 2 10];
flag = 1;
data_con_de(:) = data_con_de(length(data_con_de):-1:1);
for k = 1:length(data_con_de)
for h = 1:8
if State_Trans_Table(h,flag) == data_con_de(k)
flag = h;
break;
end
end
data_oct1(k) = flag;
end
data_oct1 = data_oct1-1;
data_oct1 = data_oct1(length(data_oct1)-1:-1:1);
for r = 1:length(data_oct1)
data_mid = de2bi(data_oct1(r));
data_mid = data_mid(length(data_mid):-1:1);
data_mid = [zeros(1,4-length(data_mid)) data_mid];
data_binary((r-1)*3+1:r*3) = data_mid(2:4);
end
for m = 1:length(data_binary)/4
data_dec(m) = bi2de(data_binary(m*4:-1:(m-1)*4+1));
data_hex_char(m) = dec2hex(data_dec(m));
end
data_hex_str = vec2mat(data_hex_char,2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -