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

📄 my_trellis_decode.m

📁 3/4Trellis编码的matlab解码
💻 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 + -