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

📄 tx_gen_preamble.m

📁 ofdm系统仿真
💻 M
字号:
%Construction of the preamble
function preamble = tx_gen_preamble(sys_parm)

    global ofdm_data_parm_const;
    
    %Generate first ten short training symbols
    short_tr = ofdm_data_parm_const.ShortTrainingSymbol;

    %OverSample and IFFT operation
    ifft_in = zeros(1, sys_parm.TotNumSubc);
    ifft_in(ofdm_data_parm_const.UsedSubcIdx) = short_tr;
	if sys_parm.OverSamp > 1
        insert_zeros = zeros(1, (sys_parm.OverSamp - 1) * sys_parm.TotNumSubc);
        ifft_in_up = ifft_in(1: sys_parm.TotNumSubc / 2);
        ifft_in_down = ifft_in(sys_parm.TotNumSubc / 2 + 1: sys_parm.TotNumSubc);
        ifft_in = [ifft_in_up, insert_zeros, ifft_in_down];
    end
    ifft_out = ifft(ifft_in);

    %Pick one short training symbol
    len = (sys_parm.TotNumSubc * sys_parm.OverSamp + ofdm_data_parm_const.CPLength) * 2 / 10;
    Strs = ifft_out(1: len);

    %Extend to ten short training symbols
    short_trs=[Strs Strs Strs Strs Strs Strs Strs Strs Strs Strs];
    
    %Next generate the two long training symbols
    long_str = ofdm_data_parm_const.LongTrainingSymbol;
    
    %OverSample and IFFT operation
    ifft_in = zeros(1, sys_parm.TotNumSubc);
    ifft_in(ofdm_data_parm_const.UsedSubcIdx) = long_str;
	if sys_parm.OverSamp > 1
        insert_zeros = zeros(1, (sys_parm.OverSamp - 1) * sys_parm.TotNumSubc);
        ifft_in_up = ifft_in(1: sys_parm.TotNumSubc / 2);
        ifft_in_down = ifft_in(sys_parm.TotNumSubc / 2 + 1: sys_parm.TotNumSubc);
        ifft_in = [ifft_in_up, insert_zeros, ifft_in_down];
    end
    ifft_out = ifft(ifft_in);
    
    %Long training symbol
    long_trs = [ifft_out(length(ifft_out) - 2 * ofdm_data_parm_const.CPLength + 1: length(ifft_out)), ifft_out, ifft_out];
    
    %Concatenate first short training symbols and long training symbols
    preamble = [short_trs, long_trs];
end

⌨️ 快捷键说明

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