add_ofdm_pilots.m

来自「国外大学的同志作出来的好程序」· M 代码 · 共 42 行

M
42
字号
function freqd_symbols=add_ofdm_pilots(mx_symbols, pilot, ofdm_sim);
%Compose OFDM symbols with pilot symbols
%
%
tx_num=size(mx_symbols, 2);
if size(pilot, 2)~=tx_num,
    disp('[add_OFDM_pilots]Error pilot and data dimension mismatch.');
    return;
end


%make an integeral number of OFDM symbols
tval=mod(size(mx_symbols, 1), ofdm_sim.Nd);
if tval
    mx_symbols=[mx_symbols; zeros(ofdm_sim.Nd-tval, tx_num)];
end

%number of OFDM blocks. (OFDM symbols)
OFDMsymbols_num=size(mx_symbols, 1)/ofdm_sim.Nd;
%disp('[add_ofdm_pilots]Number of OFDM blocks.')
%disp(num2str(OFDMsymbols_num));

%output OFDM symbols
freqd_symbols=zeros(ofdm_sim.Nfft*OFDMsymbols_num, tx_num);

%note for MIMO, pilot info should be a matrix.
for ic_tx=1: tx_num,

    %a matrix to store OFDM symbols
    OFDMsymbols_mat=zeros(ofdm_sim.Nfft, OFDMsymbols_num);

    %reshape the OFDM data
    frames_mat=reshape(mx_symbols(:, ic_tx), ofdm_sim.Nd, OFDMsymbols_num);

    %merge the OFDM data and the pilot info
    OFDMsymbols_mat(ofdm_sim.DataSubcIndex, :)=frames_mat;
    OFDMsymbols_mat(ofdm_sim.PilotSubcIndex, :)=repmat(pilot(:, ic_tx), 1, OFDMsymbols_num);

    freqd_symbols(:, ic_tx)=OFDMsymbols_mat(:);
end

⌨️ 快捷键说明

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