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

📄 st_trellis_dec_c.m

📁 通信中常用的卷积码信道译码源码程序
💻 M
字号:
function outputs = ...   st_trellis_dec_C(Data_received,ST_NextState,ST_Output,Lut_InfBits, ...                    ModMap, alpha_channel,fading_gains_i,TerminateF,SF,NRx);%------------------------------------------------------------------------------% Decode received space-time trellis coded data matrix.%% Format:% -------%% outputs = ...%%   st_trellis_dec_C(Data_received,ST_NextState,ST_Output,Lut_InfBits, ...%                    ModMap, alpha_channel,fading_gains_i,TerminateF,SF,NRx);% % Author: MVe% Date:   27.08.2002%------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- Initialisations -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Length of the received symbol/data vectorLData = length(Data_received);% Extract most used variables from struct 'Trellis'% n = size(ST_Output{1,1},2);                % # of outputs/antennak_bits = log2(size(ST_NextState,2));       % # input bits to encoderm_bits = log2(size(ST_NextState,1));       % encoder memory (in bits)m = ceil(m_bits/k_bits);                   % encoder memory (in "symbols")number_of_states = size(ST_NextState,1);NTx = size(ST_Output{1,1},1);              % number of transmit antennas% Separate trellis outputs for different tx-antennask_bits = log2(size(ST_NextState,2));       % # input bits to encodertmp = [ST_Output{:}];Output_mod_1 = ModMap(reshape(tmp(1,:),number_of_states,2^k_bits));Output_mod_2 = ModMap(reshape(tmp(2,:),number_of_states,2^k_bits));%% -- fading_gains_i = ('tx_antenna','time','rx_antenna') -- %%%% De-interleave data and fading (same interleaving assumed for all channels)if SF>1  temp_SF = zeros(SF,LData/SF);  temp_SF_i = zeros(SF,LData/SF);  %% -- Fading gains -- %%  for i1=1:NRx    for i2 = 1:NTx      temp_SF_i=reshape(fading_gains_i(i2,:,i1),SF,LData/SF);      for i3=1:SF        temp_SF(i3,alpha_channel)=temp_SF_i(i3,:);      end % for i3=1:SF      fading_gains_i(i2,:,i1)=reshape(temp_SF,1,LData);      end % for i2 = 1:NTx        end % for i1=1:NRx    %% -- Data -- %%  for i1=1:NRx    temp_SF_i=reshape(Data_received(i1,:),SF,LData/SF);    for i2=1:SF      temp_SF(i2,alpha_channel)=temp_SF_i(i2,:);    end % for i2=1:SF    Data_received(i1,:)=reshape(temp_SF,1,LData);    end % for i1=1:2*NRx    else    Data_received(:,alpha_channel) = Data_received;  fading_gains_i(:,alpha_channel,:) = fading_gains_i;  end % if SF>1fading_gains = zeros(NTx*NRx,LData);for i1 = 1:NRx  fading_gains((i1-1)*NTx+1:i1*NTx,:) = fading_gains_i(:,:,i1);end % for i1 = 1:NRx  final_state_path = st_dec_CC(Data_received, ST_NextState, Output_mod_1,...            			     Output_mod_2, fading_gains, k_bits*m, SF);% Convert state path to info bit sequenceout_tmp = cell(1,length(final_state_path)-1);for i1 = 1:length(out_tmp)  out_tmp(i1) = ...      Lut_InfBits(final_state_path(i1),final_state_path(i1+1));end % for i1 = 1:2:length(Data_received)outputs = [out_tmp{:}];% Remove tail bitsif TerminateF  outputs = outputs(1:end-k_bits*(ceil(log2(number_of_states)/k_bits)));end % if TerminateF

⌨️ 快捷键说明

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