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

📄 rx_timed_to_freqd.m

📁 ofdm系统仿真
💻 M
字号:
%FFT operation, downsample and separate the data
function [freq_tr_syms, freq_data_syms, freq_pilot_syms] = rx_timed_to_freqd(time_signal, sys_parm)

    global ofdm_data_parm_const;
    global ofdm_data_parm_var;
    
    time_signal = time_signal /(sys_parm.TotNumSubc * sys_parm.OverSamp / sqrt(ofdm_data_parm_const.UsedNumSubc));

    long_training_end = 2 * (sys_parm.TotNumSubc * sys_parm.OverSamp);
    ofdm_symbol_len = sys_parm.TotNumSubc * sys_parm.OverSamp + ofdm_data_parm_const.CPLength;   
        
    %Long Training symbols
    long_tr_syms = time_signal(1: long_training_end);
    long_tr_syms = conj(reshape(long_tr_syms, sys_parm.TotNumSubc * sys_parm.OverSamp, 2)');
    %To frequency domain
    freq_long_tr = fft(long_tr_syms, [], 2);
    freq_long_tr = freq_long_tr(:, [1 : sys_parm.TotNumSubc / 2, sys_parm.TotNumSubc * sys_parm.OverSamp - sys_parm.TotNumSubc / 2 + 1: ...
        sys_parm.TotNumSubc * sys_parm.OverSamp]);
    %Select training carriers
    freq_tr_syms = freq_long_tr(:, ofdm_data_parm_const.UsedSubcIdx);
    
    %Take data symbols
    data_syms = time_signal(long_training_end + 1: long_training_end + ofdm_symbol_len * sys_parm.NumOFDMSymbols);
    %Cut to multiple of symbol period
    data_syms = conj(reshape(data_syms, ofdm_symbol_len, sys_parm.NumOFDMSymbols)');
    %Remove guard intervals
    data_syms(:, 1 : ofdm_data_parm_const.CPLength) = [];
    %Perform fft
    freq_data = fft(data_syms, [], 2);
    freq_data = freq_data(:, [1 : sys_parm.TotNumSubc / 2, sys_parm.TotNumSubc * sys_parm.OverSamp - sys_parm.TotNumSubc / 2 + 1: ...
        sys_parm.TotNumSubc * sys_parm.OverSamp]);
    
    %Initinal
    ofdm_data_parm_var.Index = 0;
    freq_data_syms = zeros(sys_parm.NumOFDMSymbols, sys_parm.TotNumSubc);
    freq_pilot_syms = zeros(sys_parm.NumOFDMSymbols, sys_parm.TotNumSubc);
    %For loop
    for n = 1 : sys_parm.NumOFDMSymbols
        update_ofdm_data_parm_var;
        
        freq_data_syms(n, ofdm_data_parm_var.DataSubcIdx) = freq_data(n, ofdm_data_parm_var.DataSubcIdx);
        if ofdm_data_parm_var.HavePilot
            freq_pilot_syms(n, ofdm_data_parm_var.PilotSubcIdx) = freq_data(n, ofdm_data_parm_var.PilotSubcIdx);
        end
    end
end

⌨️ 快捷键说明

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