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

📄 rx_estimate_channel.m

📁 OFDM频域算法
💻 M
字号:
%

function channel_estimate = rx_estimate_channel(freq_tr_syms, cir, sim_options)
%freq_tr_syms为52*2的矩阵,子载波数k=52,符号数n=2
global sim_consts;

[n_tx_antennas, n_rx_antennas] = get_n_antennas(sim_options);

if sim_options.ChannelEstimation   %如果选中信道估计选项
   % Estimate from training symbols
   if ~sim_options.UseTxDiv   %如果没用到发射分集
      for rx_ant=1:n_rx_antennas
         mean_symbols = mean(squeeze(freq_tr_syms(rx_ant,:,:)).');%freq_tr_syms的第一维是接收天线数,第二维是子载波索引,第三维是符号,.'表示非共轭转置
                                                                  %此语句旨在将freq_tr_syms的天线维去除后转置,再按列求每列的均值,组成行向量,1*52矩阵       
         channel_estimate(rx_ant,:) = mean_symbols.*conj(sim_consts.LongTrainingSymbols);%P52,式2.70
      end
      channel_estimate = channel_estimate.';%转置后,列元素为各载波的信道估计,行为天线,52*1的列向量
   else                      %一旦用到发射分集
      for rx_ant=1:n_rx_antennas
         for tx_ant = 1:n_tx_antennas            
            tr_symbol = squeeze(freq_tr_syms(rx_ant, :, tx_ant));%成为1*52的行向量            
            channel_estimate((rx_ant-1)*n_tx_antennas+tx_ant,:) = ...
               tr_symbol.*conj(sim_consts.LongTrainingSymbols*sqrt(1/2));  %(n_rx_antennas* n_tx_antennas)*52的二维矩阵
         end
      end
      channel_estimate = channel_estimate.';
   end
else                   %如果没有选用信道估计
   % Known channel estimate
   channel_estimate = fft([zeros(size(cir,1), abs(sim_options.RxTimingOffset)) cir], 64, 2);
   reorder = [33:64 1:32];
   channel_estimate(:,reorder) = channel_estimate;
   channel_estimate = channel_estimate(:, sim_consts.UsedSubcIdx).';
end

⌨️ 快捷键说明

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