encoder4psk.m

来自「空时格码编码器」· M 代码 · 共 47 行

M
47
字号
function  out_codes = encoder4psk(Branch_coef,Input_stream)
%4-PSK Trellis codes for two transmit antennas

Size = size(Input_stream);
len_stream = Size(2);
len_codes = len_stream/2;                                                  % divide the stream into two parts

sizeBc = size(Branch_coef); 
mem_order = sizeBc(1)-2;                              % the memory order 
states = 2^mem_order;                                   % n states


upper_codes(1) = 0;
lower_codes(1) = 0;
Upper_stream(1) = 0;
Lower_stream(1) = 0;


                                               
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);
k = 1;
for i = upper_order+1:upper_order+len_codes
    Upper_stream(i) = Input_stream(2*k-1);                                     % the upper branch's stream
    k = k+1;
end
k = 1;
for i = lower_order+1:lower_order+len_codes
    Lower_stream(i) = Input_stream(2*k);                                       % the lower branch's stream
    k = k+1;
end 
for t = 1:len_codes                                           % the output of the encoder
    upper_codes(t) = 0;
    lower_codes(t) = 0;
    for p = 1:upper_order+1                      
        upper_codes(t) = upper_codes(t)+Upper_stream(t+upper_order+1-p)*Branch_coef(p,1);
        lower_codes(t) = lower_codes(t)+Upper_stream(t+upper_order+1-p)*Branch_coef(p,2);
    end
    for q = 1:lower_order+1
        upper_codes(t) = upper_codes(t)+Lower_stream(t+lower_order+1-q)*Branch_coef(upper_order+1+q,1);
        lower_codes(t) = lower_codes(t)+Lower_stream(t+lower_order+1-q)*Branch_coef(upper_order+1+q,2);
    end
    upper_codes(t) = mod(upper_codes(t),4);
    lower_codes(t) = mod(lower_codes(t),4);
end
out_codes(1,:) = upper_codes;
out_codes(2,:) = lower_codes;

⌨️ 快捷键说明

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