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

📄 trellis.m

📁 空时格码编码器
💻 M
字号:
function [last_state, last_input, next_state,codes,Modulate_codes] = trellis(Input_codes, Branch_coef, States)
          last_state = zeros(1,4);
          size_States = size(States);
          La_States = zeros(4,size_States(2));
          sizeBc = size(Branch_coef); 
          mem_order = sizeBc(1)-2;                              % the memory order 
          states = 2^mem_order;                                   % n states
                                              
          upper_order = mem_order/2 - mod(mem_order/2,1);                                    % the memory order of the upper and lower branches
          lower_order = (mem_order+1)/2 - mod((mem_order+1)/2,1);
          last_input = [States(1),States(upper_order+1)];
          Upper_stream = Input_codes(1);                                     % the upper branch's stream
          Lower_stream = Input_codes(2);                                       % the lower branch's stream

          upper_codes = 0;
          lower_codes = 0;
          upper_codes = upper_codes + Upper_stream * Branch_coef(1,1);
          lower_codes = lower_codes + Upper_stream * Branch_coef(1,2);
          for p = 1:upper_order                      
              upper_codes = upper_codes + States(p)*Branch_coef(p+1,1);
              lower_codes = lower_codes + States(p)*Branch_coef(p+1,2);
          end
          for k = 1:upper_order-1
              La_States(:,k) = States(k+1);
          end
          La_States(1:2,upper_order) = 0;
          La_States(3:4,upper_order) = 1;
          for k = 1:lower_order-1
              La_States(:,upper_order+k) = States(upper_order+k+1);
          end
          La_States([1,3],upper_order+lower_order) = 0;
          La_States([2,4],upper_order+lower_order) = 1;
          while p > 1
                States(p) = States(p-1);
                p = p-1;
          end
          States(1) = Upper_stream;
          upper_codes = upper_codes + Lower_stream * Branch_coef(p+2,1);
          lower_codes = lower_codes + Lower_stream * Branch_coef(p+2,2);
          for q = 1:lower_order
              upper_codes = upper_codes + States(p+q)*Branch_coef(p+q+2,1);
              lower_codes = lower_codes + States(p+q)*Branch_coef(p+q+2,2);
          end
          while q > 1
                States(upper_order+q) = States(upper_order+q-1);
                q = q-1;
          end
          States(upper_order+1) = Lower_stream;
          upper_codes = mod(upper_codes,4);
          lower_codes = mod(lower_codes,4);
          codes = [upper_codes; lower_codes];
          next_state = 0;
          for i = 1:size_States(2)
              if States(i) == 1
                  next_state = next_state + 2^(size_States(2)-i);
              end
          end
          next_state = next_state + 1;
          for k = 1:4
              for i = 1:size_States(2)
                  if La_States(k,i) == 1
                     last_state(1,k) = last_state(1,k) + 2^(size_States(2)-i);
                  end
              end
              last_state(1,k) = last_state(1,k) + 1;
          end
          Modulate_codes = zeros(2,1);
          for i = 1:2                                                        % modulate the output codes
              if codes(i) == 0
                 Modulate_codes(i) = 1;
              end
              if codes(i) == 1
                 Modulate_codes(i) = sqrt(-1);
              end
              if codes(i) == 2
                 Modulate_codes(i) = -1;
              end
              if codes(i) == 3
                 Modulate_codes(i) = -sqrt(-1);
              end 
         end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -