⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_trellis_code.m

📁 3/4速率Trellis编码的matlab实现
💻 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 + -