📄 st_trellis_dec_c.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 + -