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

📄 st_trellis_enc.m

📁 通信中常用的卷积码信道译码源码程序
💻 M
字号:
function [outputs,alpha_channel] = ...    st_trellis_enc(Data,ST_NextState,ST_Output,ModMap,TerminateF,NTx);%------------------------------------------------------------------------------% Encode binary 1-D data vector with space-time trellis codes.%% Format:% -------%% [outputs,alpha_channel] = ...%   st_trellis_enc(Data,ST_NextState,ST_Output,ModMap,TerminateF,NTx)% % Author: MVe% Date:   22.08.2002%------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- Initial parameter checking etc.. -- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Works currently only for 1-D input vectorstmp = size(Data);if or(length(tmp) > 2,sum(tmp(:)>1)>1)  error('Encoder works only with vector inputs');else  if tmp(1)>tmp(2)    Data = Data.';  end % if or(length(tmp) > 2,sum(tmp(:)>1)>1)end % if or(length(tmp) > 2,sum(tmp(:)>1)>1)% Check is selected st-code validif size(ST_Output{1,1},1)~=NTx  error('Number of output symbols ~= number of tx antennas');end % if size(ST_Output{1,1},1)~=NTx%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- Initialise few parameters -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%k = log2(size(ST_NextState,2));         % # of input bitsn = 1;                                  % output is one modulated symbolm_bits = log2(size(ST_NextState,1));    % encoder memory (in bits)m = ceil(m_bits/k);                     % encoder memory (in "symbols")DLength = size(Data,2);DLength_ptr = DLength/k;% "Pointer" presentation of the input data.tmp = zeros(DLength_ptr,1);Data_ptr = zeros(1,DLength_ptr);tmp(:,1) = ...    bin2dec(reshape(char(Data(1,:)+48),k,DLength_ptr).')+1;Data_ptr = tmp.';% Initialise state of the trellis.state = 1;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- Space-time encoding and modulation -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Format of 'outputs':%  Column #i = modulated symbols for antenna #i%outputs = zeros(NTx,n*DLength_ptr);outputs_tmp = zeros(NTx,n*DLength_ptr);for i1 = 1:length(Data_ptr)      % Output caused by transition (encoded symbols)  outputs_tmp(:,(i1-1)*n+1:i1*n) = ST_Output{state,Data_ptr(i1)};  % New state after the transition  state =  ST_NextState(state,Data_ptr(i1));  end % for 1:length(Data)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- Terminate trellis with tail bits (if required) -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if TerminateF  %% Drive trellis to zero state (non-recursive encoder):             %%  %%   Pad data with m zeros (tail bits are m zeros).                 %%  %      for i1 = [1:m] + i1    % Output caused by transition (encoded bits)    outputs_tmp(:,(i1-1)*n+1:i1*n) = ST_Output{state,1};    % New state after the transition    state = ST_NextState(state,1);  end % for i1 = [1:m] + i1end % if TerminateF% Modulateoutputs = ModMap(outputs_tmp);% Interleave[dummy,alpha_channel] = sort(rand(1,length(outputs)));outputs = outputs(:,alpha_channel);

⌨️ 快捷键说明

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