git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5910 818b1a75-f10b-46b9-bf7c-635c3b92a50f
47 lines
1.7 KiB
Matlab
47 lines
1.7 KiB
Matlab
%
|
|
% PURPOSE : channel estimation using least square method
|
|
%
|
|
% ARGUMENTS :
|
|
%
|
|
% m_sym_T : transmitted symbol, d_N_f x d_N_ofdm x d_N_ant_act x d_N_meas
|
|
% m_sym_R : received symbol, d_N_f x d_N_ofdm x d_N_ant_act x d_N_meas
|
|
% d_N_meas : number of measurements
|
|
%
|
|
% OUTPUTS :
|
|
%
|
|
% m_H_est : estimation of sub-channels, d_N_antR x d_N_antT x d_N_f x d_N_meas
|
|
%
|
|
%**********************************************************************************************
|
|
% EURECOM - All rights reserved
|
|
%
|
|
% AUTHOR : Xiwen JIANG, Florian Kaltenberger
|
|
%
|
|
% DEVELOPMENT HISTORY :
|
|
%
|
|
% Date Name(s) Version Description
|
|
% ----------- ------------- ------- ------------------------------------------------------
|
|
% Apr-29-2014 X. JIANG 0.1 creation of code
|
|
%
|
|
% REFERENCES/NOTES/COMMENTS :
|
|
%
|
|
% - Based on the function "runmeas_full_duplex" created by Mirsad Cirkic, Florian Kaltenberger.
|
|
%
|
|
%**********************************************************************************************
|
|
function m_H_est = f_ch_est(m_sym_T, m_sym_R)
|
|
|
|
%% ** initialisation **
|
|
[d_N_f,d_N_OFDM,d_N_antT,d_N_meas] = size(m_sym_T);
|
|
d_N_antR = size(m_sym_R,3);
|
|
m_H_est = zeros(d_N_antR,d_N_antT,d_N_f,d_N_meas);
|
|
|
|
%% ** estimate the subband channel for each measurement and antenna **
|
|
for d_n_meas = 1:d_N_meas
|
|
for d_n_f = 1:d_N_f
|
|
m_y = reshape(m_sym_R(d_n_f,:,:,d_n_meas),d_N_OFDM,d_N_antR).'; % squeeze: problem for antenna number = 1 case
|
|
m_s = reshape(m_sym_T(d_n_f,:,:,d_n_meas),d_N_OFDM,d_N_antT).';
|
|
m_H_est(:,:,d_n_f,d_n_meas) = m_y*m_s'/(m_s*m_s'); % LS channel estimation
|
|
end
|
|
end
|
|
|
|
end
|