📄 my_trellis_code.m
字号:
function my_Trellis_code(data)
% data_input = 'C80000000004A0000000002F880100000000';
% data_input = 'C80000000005C40007E0002E600280008000';
% data_input = 'C80000000004A0000000002F880100000000';
data_input = '753488479224499224DBB66DDBB66DDBB66D';
data_group1 = data_input(1:4);
data_group2 = data_input(5:8);
data_group3 = data_input(9:12);
data_group4 = data_input(13:16);
data_group5 = data_input(17:20);
data_group6 = data_input(21:24);
data_group7 = data_input(25:28);
data_group8 = data_input(29:32);
data_group9 = data_input(33:36);
data_hex = {data_group1 data_group2 data_group3 data_group4 data_group5...
data_group6 data_group7 data_group8 data_group9};
data_dec = hex2dec(data_hex);
for i = 1:length(data_hex)
data_binvex = de2bi(data_dec(i));
data_bin_tem = data_binvex(length(data_binvex):-1:1);
data_bin((i-1)*16+1:i*16) = [zeros(1,(16-length(data_bin_tem))),data_bin_tem];
end
data_bin = [data_bin zeros(1,3)];
data_bin_oct = 0;
for j = 1:length(data_bin)/3
data_bin_j = data_bin((j-1)*3+1:j*3);
data_bin_j_inv = data_bin_j(3:-1:1);
data_bin_oct = [data_bin_oct bi2de(data_bin_j_inv)];
end
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];
for k = 1:length(data_bin_oct)-1
m = data_bin_oct(k);
n = data_bin_oct(k+1);
data_m = State_Trans_Table(m+1,:);
data_con(k) = data_m(n+1);
end
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_map = 0;
for h = 1:length(data_con)
switch data_con(h)
case (0)
data_map_h = Dibit_Map_Table(1,:);
case (1)
data_map_h = Dibit_Map_Table(2,:);
case (2)
data_map_h = Dibit_Map_Table(3,:);
case (3)
data_map_h = Dibit_Map_Table(4,:);
case (4)
data_map_h = Dibit_Map_Table(5,:);
case (5)
data_map_h = Dibit_Map_Table(6,:);
case (6)
data_map_h = Dibit_Map_Table(7,:);
case (7)
data_map_h = Dibit_Map_Table(8,:);
case (8)
data_map_h = Dibit_Map_Table(9,:);
case (9)
data_map_h = Dibit_Map_Table(10,:);
case (10)
data_map_h = Dibit_Map_Table(11,:);
case (11)
data_map_h = Dibit_Map_Table(12,:);
case (12)
data_map_h = Dibit_Map_Table(13,:);
case (13)
data_map_h = Dibit_Map_Table(14,:);
case (14)
data_map_h = Dibit_Map_Table(15,:);
case (15)
data_map_h = Dibit_Map_Table(16,:);
end
data_map = [data_map data_map_h];
end
data_map = data_map(2:length(data_map));
data_map = data_map';
Interleave_Map_Table = zeros(98,1);
Interleave_Map_Table(1:2:26) = [1:8:98];
Interleave_Map_Table(2:2:26) = [2:8:98];
Interleave_Map_Table(27:2:50) = [3:8:98];
Interleave_Map_Table(28:2:50) = [4:8:98];
Interleave_Map_Table(51:2:74) = [5:8:98];
Interleave_Map_Table(52:2:74) = [6:8:98];
Interleave_Map_Table(75:2:98) = [7:8:98];
Interleave_Map_Table(76:2:98) = [8:8:98];
for w = 1:98
index = Interleave_Map_Table(w);
data_out(w) = data_map(index);
end
data_out = data_out';
for ii = 1:98
switch data_out(ii)
case (-1)
data_out(ii) = 2;
case (-3)
data_out(ii) = 3;
case (+1)
data_out(ii) = 0;
case (+3)
data_out(ii) = 1;
end
end
data_Trellis_Dibit = data_out';
fid = fopen('data_Trellis_Dibit.txt', 'wt');
fprintf(fid,'%6.5f\n',data_Trellis_Dibit);
fclose(fid)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -