IT++ Logo
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itpp::TDL_Channel Class Reference

Tapped Delay Line (TDL) channel model. More...

#include <itpp/comm/channel.h>

Public Member Functions

 TDL_Channel (const vec &avg_power_dB="0", const ivec &delay_prof="0")
 Default constructor.
 
 TDL_Channel (const Channel_Specification &channel_spec, double sampling_time)
 Constructor with defined Channel_Specification. Delay profile will be discretized with sampling_time in seconds.
 
virtual ~TDL_Channel ()
 Destructor.
 
void set_channel_profile (const vec &avg_power_dB, const ivec &delay_prof)
 Set both average power profile in dB and power delay profile in samples.
 
void set_channel_profile_uniform (int no_taps)
 Set channel profile to uniform with no_taps taps.
 
void set_channel_profile_exponential (int no_taps)
 Set channel profile to exponential with no_taps taps.
 
void set_channel_profile (const Channel_Specification &channel_spec, double sampling_time)
 Set channel profile using Channel_Specification. Delay profile will be discretized with sampling_time in seconds.
 
void set_correlated_method (CORRELATED_METHOD method)
 Set the fading generation method to method.
 
void set_fading_type (FADING_TYPE fading_type)
 Set fading type to one of Independent, Static or Correlated.
 
void set_norm_doppler (double norm_doppler)
 Set normalized Doppler rate. A Correlated fading type will be used.
 
void set_LOS (const vec &relative_power, const vec &relative_doppler="")
 Set LOS parameters for each tap. LOS Doppler will be set to 0.7 by default.
 
void set_LOS_power (const vec &relative_power)
 Set LOS power for each tap. LOS Doppler will be set to 0.7 by default.
 
void set_LOS_doppler (const vec &relative_doppler)
 Set LOS doppler for each tap. A Correlated fading type will be used.
 
void set_doppler_spectrum (const DOPPLER_SPECTRUM *tap_spectrum)
 Set doppler spectrum for each tap in the channel profile. Rice_MEDS method will be used.
 
void set_doppler_spectrum (int tap_number, DOPPLER_SPECTRUM tap_spectrum)
 Set doppler spectrum of tap tap_number. Rice_MEDS method will be used.
 
void set_no_frequencies (int no_freq)
 Set number of sine frequencies. Rice_MEDS method will be used.
 
void set_time_offset (int offset)
 Set fading generators' time offset in samples. A Correlated fading type will be used.
 
void shift_time_offset (int no_samples)
 Shift fading generators' time offset. A Correlated fading type will be used.
 
void set_filter_length (int filter_length)
 Set fading generator filter length. FIR method will be used.
 
int taps () const
 Return the number of channel taps.
 
void get_channel_profile (vec &avg_power_dB, ivec &delay_prof) const
 Get both average power profile in dB and power delay profile in samples.
 
vec get_avg_power_dB () const
 Return power profile in dB.
 
ivec get_delay_prof () const
 Return delay profile in samples.
 
CORRELATED_METHOD get_correlated_method () const
 Return fading generation method.
 
FADING_TYPE get_fading_type () const
 Return fading type.
 
double get_norm_doppler () const
 Return normalized doppler rate.
 
vec get_LOS_power () const
 Get relative power (Rice factor) for each tap.
 
vec get_LOS_doppler () const
 Get relative Doppler (to the maximum Doppler) for each tap.
 
double get_LOS_power (int tap_number) const
 Get relative power (Rice factor) for tap tap_number.
 
double get_LOS_doppler (int tap_number) const
 Get relative Doppler (to the maximum Doppler) for tap tap_number.
 
int get_no_frequencies () const
 Get the minimum number of frequencies used in Rice MEDS fading generator.
 
double get_time_offset () const
 Get fading generators' time ofset.
 
double calc_mean_excess_delay () const
 Calculate mean excess delay in samples.
 
double calc_rms_delay_spread () const
 Calculate RMS delay spread in samples.
 
void init ()
 Initialize all fading generators. Automatically invoked in generate() or filter() functions.
 
void generate (int no_samples, Array< cvec > &channel_coeff)
 Generate no_samples values of the channel.
 
void generate (int no_samples, cmat &channel_coeff)
 Generate no_samples values of the channel. Returns the matrix with one tap per column.
 
void filter_known_channel (const cvec &input, cvec &output, const Array< cvec > &channel_coeff)
 Filter the input with the known channel values channel_coeff (e.g. from the generate function)
 
void filter_known_channel (const cvec &input, cvec &output, const cmat &channel_coeff)
 Filter the input with the known channel values channel_coeff (e.g. from the generate function)
 
void filter (const cvec &input, cvec &output, Array< cvec > &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
void filter (const cvec &input, cvec &output, cmat &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
cvec filter (const cvec &input, Array< cvec > &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
cvec filter (const cvec &input, cmat &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
void filter (const cvec &input, cvec &output)
 Generate channel coefficients and filter the input. Only return the output.
 
cvec filter (const cvec &input)
 Generate channel coefficients and filter the input. Only return output.
 
void operator() (const cvec &input, cvec &output, Array< cvec > &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
void operator() (const cvec &input, cvec &output, cmat &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
cvec operator() (const cvec &input, Array< cvec > &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
cvec operator() (const cvec &input, cmat &channel_coeff)
 Generate channel coefficients and filter the input. Return output and channel coefficients.
 
cvec operator() (const cvec &input)
 Generate channel coefficients and filter the input. Only return output.
 
void calc_impulse_response (const Array< cvec > &channel_coeff, Array< cvec > &impulse_response)
 Calculate impulse-response on the supplied channel coefficients (produced by the generate() function)
 
void calc_frequency_response (const Array< cvec > &channel_coeff, Array< cvec > &frequency_response, const int fft_size)
 Calculate frequency-response on the supplied channel coefficients (produced by the generate() function)
 
void calc_frequency_response (const cmat &channel_coeff, cmat &frequency_response, const int fft_size)
 Calculate frequency-response on the supplied channel coefficients (produced by the generate() function)
 
double get_sampling_time () const
 Return channel sampling time (used for discretization)
 

Protected Member Functions

void discretize (const vec &delay_profile)
 Discretize the delay profile with discrete_Ts (Ts). All taps within ((i-0.5)Ts,(i+0.5)Ts] belong to the ith discrete tap.
 

Protected Attributes

bool init_flag
 Channel ready to produce data.
 
vec a_prof
 Average amplitude of each tap.
 
ivec d_prof
 Delay in samples for each tap.
 
vec los_power
 Relative power for each Rice component.
 
vec los_dopp
 Relative LOS Doppler for each Rice component.
 
int N_taps
 Number of taps.
 
double n_dopp
 Normalized Doppler of the correlated fading.
 
FADING_TYPE fading_type
 Fading type: Independent (default), Static or Correlated.
 
CORRELATED_METHOD method
 Correlated fading generation method: Rice_MEDS (default), IFFT or FIR.
 
Array< DOPPLER_SPECTRUMtap_doppler_spectrum
 Doppler spectrum for each tap.
 
Array< Fading_Generator * > fading_gen
 Fading generators for each tap.
 
int filter_length
 Filter length of FIR fading generator.
 
int nrof_freq
 Number of sine frequencies in the Rice MEDS fading generator.
 
double discrete_Ts
 Sampling time of discretization.
 

Detailed Description

Tapped Delay Line (TDL) channel model.

Author
Tony Ottosson, Adam Piatyszek and Zbigniew Dlugaszewski

A time invariant (or at least wide-sense stationary) channel have an impulse response that can be modeled as:

\[ h(t) = \sum_{k=0}^{N_\mathrm{taps}-1} a_k \exp (-j \theta_k )
\delta(t-\tau_k), \]

where $ N_{taps} $ is the number of channel taps, $ a_k $ is the average amplitude at delay $ \tau_k $, and $ \theta_k $ is the channel phase of the $ k^{th} $ channel tap. The average power profile, and delay profile are defined as:

\[ \mathbf{a} = [a_0, a_1, \ldots, a_{N_\mathrm{taps}-1}] \]

and

\[ \mathbf{\tau} = [\tau_0, \tau_1, \ldots, \tau_{N_\mathrm{taps}-1}],
\]

respectively. We assume without loss of generality that $ \tau_0 =
0 $ and $ \tau_0 < \tau_1 < \ldots < \tau_{N_\mathrm{taps}-1} $.

To initialize the channel profile the following parameters should be defined:

In the case of correlated channel, the correlation in time is decided by the normalized Doppler frequency and Doppler spectrum. The normalized Doppler frequency is calculated as $ f_\mathrm{max} T_s
$, where $ f_\mathrm{max} $ is the maximum Doppler frequency and $ T_s $ is the sample duration.

Two main types of generation methods exist: the filter method and Rice method. In the filter method the correlated fading process is generated with a filtering of the complex Gaussian process to achieve a given Doppler spectrum (Jakes by default). Currently there are two filter implementations:

The preferred method for generating the correlated fading process is the Rice method that approximate the fading process as a sum of sinusoids. Currently there is only one implementation, the Rice Method of Exact Doppler Spread (Rice_MEDS), which is also the default choice.

To summarize, the currently supported correlated fading generation methods are:

Beside the above described correlated methods, two additional fading generators exists: the Independent_Fading_Generator and Static_Fading_Generator ones. Their names are self-explanatory. The only optional parameter of these two generators is a relative_power of the LOS component.

Example: Simulation of WCDMA

#include <itpp/itcomm.h>
using namespace itpp;
int main() {
// set sampling time at a half of chip rate (0.5 / 3.84e6)
double Ts = 130.2e-9;
// select the COST259 Rural Area model
// initialize with the predefined channel profile
// set the normalized Doppler; fading type will be set to Correlated
// and Rice_MEDS method will be used (default settings)
channel.set_norm_doppler(0.01);
// -----------------------------------------------
// Your code here generates the transmitted signal
// -----------------------------------------------
// Channel coefficients are returned in the 'coeff' array of complex values
}
General array class.
Definition array.h:105
General specification of a time-domain multipath channel.
Definition channel.h:697
Tapped Delay Line (TDL) channel model.
Definition channel.h:858
Include file for the IT++ communications module.
itpp namespace
Definition itmex.h:37

References:

Definition at line 857 of file channel.h.

Constructor & Destructor Documentation

◆ TDL_Channel() [1/2]

itpp::TDL_Channel::TDL_Channel ( const vec &  avg_power_dB = "0",
const ivec &  delay_prof = "0" 
)

◆ TDL_Channel() [2/2]

itpp::TDL_Channel::TDL_Channel ( const Channel_Specification channel_spec,
double  sampling_time 
)

Constructor with defined Channel_Specification. Delay profile will be discretized with sampling_time in seconds.

Definition at line 865 of file channel.cpp.

References set_channel_profile(), and tap_doppler_spectrum.

◆ ~TDL_Channel()

itpp::TDL_Channel::~TDL_Channel ( )
virtual

Destructor.

Definition at line 875 of file channel.cpp.

References fading_gen, and itpp::Array< T >::size().

Member Function Documentation

◆ set_channel_profile() [1/2]

void itpp::TDL_Channel::set_channel_profile ( const vec &  avg_power_dB,
const ivec &  delay_prof 
)

◆ set_channel_profile_uniform()

void itpp::TDL_Channel::set_channel_profile_uniform ( int  no_taps)

Set channel profile to uniform with no_taps taps.

Definition at line 917 of file channel.cpp.

References it_assert, set_channel_profile(), and itpp::zeros().

◆ set_channel_profile_exponential()

void itpp::TDL_Channel::set_channel_profile_exponential ( int  no_taps)

Set channel profile to exponential with no_taps taps.

Definition at line 929 of file channel.cpp.

References itpp::dB(), it_assert, and set_channel_profile().

◆ set_channel_profile() [2/2]

void itpp::TDL_Channel::set_channel_profile ( const Channel_Specification channel_spec,
double  sampling_time 
)

Set channel profile using Channel_Specification. Delay profile will be discretized with sampling_time in seconds.

Definition at line 944 of file channel.cpp.

References a_prof, discrete_Ts, discretize(), init_flag, N_taps, itpp::norm(), itpp::pow(), set_LOS(), itpp::Array< T >::size(), and tap_doppler_spectrum.

◆ set_correlated_method()

void itpp::TDL_Channel::set_correlated_method ( CORRELATED_METHOD  method)

Set the fading generation method to method.

Definition at line 969 of file channel.cpp.

References fading_type, init_flag, and method.

◆ set_fading_type()

void itpp::TDL_Channel::set_fading_type ( FADING_TYPE  fading_type)

Set fading type to one of Independent, Static or Correlated.

Definition at line 976 of file channel.cpp.

References fading_type, and init_flag.

◆ set_norm_doppler()

void itpp::TDL_Channel::set_norm_doppler ( double  norm_doppler)

Set normalized Doppler rate. A Correlated fading type will be used.

Definition at line 983 of file channel.cpp.

References fading_type, init_flag, it_assert, and n_dopp.

◆ set_LOS()

void itpp::TDL_Channel::set_LOS ( const vec &  relative_power,
const vec &  relative_doppler = "" 
)

Set LOS parameters for each tap. LOS Doppler will be set to 0.7 by default.

Definition at line 994 of file channel.cpp.

References it_assert, los_dopp, los_power, N_taps, and itpp::Array< T >::size().

Referenced by set_channel_profile(), set_channel_profile(), and TDL_Channel().

◆ set_LOS_power()

void itpp::TDL_Channel::set_LOS_power ( const vec &  relative_power)

Set LOS power for each tap. LOS Doppler will be set to 0.7 by default.

Definition at line 1025 of file channel.cpp.

References init_flag, it_assert, los_dopp, los_power, N_taps, and itpp::Array< T >::size().

◆ set_LOS_doppler()

void itpp::TDL_Channel::set_LOS_doppler ( const vec &  relative_doppler)

Set LOS doppler for each tap. A Correlated fading type will be used.

Definition at line 1039 of file channel.cpp.

References init_flag, it_assert, los_dopp, los_power, n_dopp, and itpp::Array< T >::size().

◆ set_doppler_spectrum() [1/2]

void itpp::TDL_Channel::set_doppler_spectrum ( const DOPPLER_SPECTRUM tap_spectrum)

Set doppler spectrum for each tap in the channel profile. Rice_MEDS method will be used.

Definition at line 1057 of file channel.cpp.

References init_flag, it_assert, method, n_dopp, N_taps, itpp::Array< T >::set_size(), and tap_doppler_spectrum.

◆ set_doppler_spectrum() [2/2]

void itpp::TDL_Channel::set_doppler_spectrum ( int  tap_number,
DOPPLER_SPECTRUM  tap_spectrum 
)

Set doppler spectrum of tap tap_number. Rice_MEDS method will be used.

Definition at line 1073 of file channel.cpp.

References init_flag, it_assert, method, n_dopp, N_taps, itpp::Array< T >::set_size(), and tap_doppler_spectrum.

◆ set_no_frequencies()

void itpp::TDL_Channel::set_no_frequencies ( int  no_freq)

Set number of sine frequencies. Rice_MEDS method will be used.

Definition at line 1089 of file channel.cpp.

References init_flag, it_assert, method, n_dopp, and nrof_freq.

◆ set_time_offset()

void itpp::TDL_Channel::set_time_offset ( int  offset)

Set fading generators' time offset in samples. A Correlated fading type will be used.

Definition at line 1112 of file channel.cpp.

References fading_gen, init(), init_flag, it_assert, n_dopp, and N_taps.

◆ shift_time_offset()

void itpp::TDL_Channel::shift_time_offset ( int  no_samples)

Shift fading generators' time offset. A Correlated fading type will be used.

Definition at line 1125 of file channel.cpp.

References fading_gen, init(), init_flag, it_assert, n_dopp, and N_taps.

◆ set_filter_length()

void itpp::TDL_Channel::set_filter_length ( int  filter_length)

Set fading generator filter length. FIR method will be used.

Definition at line 1100 of file channel.cpp.

References filter_length, init_flag, it_assert, method, and n_dopp.

◆ taps()

int itpp::TDL_Channel::taps ( ) const
inline

Return the number of channel taps.

Definition at line 908 of file channel.h.

◆ get_channel_profile()

void itpp::TDL_Channel::get_channel_profile ( vec &  avg_power_dB,
ivec &  delay_prof 
) const

Get both average power profile in dB and power delay profile in samples.

Definition at line 1138 of file channel.cpp.

References a_prof, d_prof, and itpp::log10().

◆ get_avg_power_dB()

vec itpp::TDL_Channel::get_avg_power_dB ( ) const

Return power profile in dB.

Definition at line 1145 of file channel.cpp.

References a_prof, and itpp::log10().

◆ get_delay_prof()

ivec itpp::TDL_Channel::get_delay_prof ( ) const
inline

Return delay profile in samples.

Definition at line 915 of file channel.h.

◆ get_correlated_method()

CORRELATED_METHOD itpp::TDL_Channel::get_correlated_method ( ) const
inline

Return fading generation method.

Definition at line 918 of file channel.h.

◆ get_fading_type()

FADING_TYPE itpp::TDL_Channel::get_fading_type ( ) const
inline

Return fading type.

Definition at line 920 of file channel.h.

◆ get_norm_doppler()

double itpp::TDL_Channel::get_norm_doppler ( ) const
inline

Return normalized doppler rate.

Definition at line 923 of file channel.h.

◆ get_LOS_power() [1/2]

vec itpp::TDL_Channel::get_LOS_power ( ) const
inline

Get relative power (Rice factor) for each tap.

Definition at line 926 of file channel.h.

◆ get_LOS_doppler() [1/2]

vec itpp::TDL_Channel::get_LOS_doppler ( ) const
inline

Get relative Doppler (to the maximum Doppler) for each tap.

Definition at line 928 of file channel.h.

◆ get_LOS_power() [2/2]

double itpp::TDL_Channel::get_LOS_power ( int  tap_number) const
inline

Get relative power (Rice factor) for tap tap_number.

Definition at line 930 of file channel.h.

◆ get_LOS_doppler() [2/2]

double itpp::TDL_Channel::get_LOS_doppler ( int  tap_number) const
inline

Get relative Doppler (to the maximum Doppler) for tap tap_number.

Definition at line 932 of file channel.h.

◆ get_no_frequencies()

int itpp::TDL_Channel::get_no_frequencies ( ) const
inline

Get the minimum number of frequencies used in Rice MEDS fading generator.

Definition at line 935 of file channel.h.

◆ get_time_offset()

double itpp::TDL_Channel::get_time_offset ( ) const

Get fading generators' time ofset.

Definition at line 1150 of file channel.cpp.

References fading_gen.

◆ calc_mean_excess_delay()

double itpp::TDL_Channel::calc_mean_excess_delay ( ) const

Calculate mean excess delay in samples.

Definition at line 1158 of file channel.cpp.

References a_prof, d_prof, itpp::sqr(), and itpp::sum_sqr().

◆ calc_rms_delay_spread()

double itpp::TDL_Channel::calc_rms_delay_spread ( ) const

Calculate RMS delay spread in samples.

Definition at line 1163 of file channel.cpp.

References a_prof, d_prof, itpp::sqr(), itpp::sum_sqr(), and itpp::to_vec().

◆ init()

void itpp::TDL_Channel::init ( )

Initialize all fading generators. Automatically invoked in generate() or filter() functions.

Definition at line 1171 of file channel.cpp.

References fading_gen, fading_type, filter_length, init_flag, it_assert, it_error, los_dopp, los_power, method, n_dopp, N_taps, nrof_freq, itpp::Array< T >::set_size(), itpp::Array< T >::size(), and tap_doppler_spectrum.

Referenced by generate(), generate(), set_time_offset(), and shift_time_offset().

◆ generate() [1/2]

void itpp::TDL_Channel::generate ( int  no_samples,
Array< cvec > &  channel_coeff 
)

Generate no_samples values of the channel.

Definition at line 1268 of file channel.cpp.

References a_prof, fading_gen, init(), init_flag, N_taps, and itpp::Array< T >::set_size().

Referenced by filter(), filter(), and generate().

◆ generate() [2/2]

void itpp::TDL_Channel::generate ( int  no_samples,
cmat &  channel_coeff 
)

Generate no_samples values of the channel. Returns the matrix with one tap per column.

Definition at line 1278 of file channel.cpp.

References a_prof, fading_gen, generate(), init(), init_flag, N_taps, and itpp::Array< T >::set_size().

◆ filter_known_channel() [1/2]

void itpp::TDL_Channel::filter_known_channel ( const cvec &  input,
cvec &  output,
const Array< cvec > &  channel_coeff 
)

Filter the input with the known channel values channel_coeff (e.g. from the generate function)

Definition at line 1289 of file channel.cpp.

References itpp::concat(), d_prof, itpp::elem_mult(), itpp::max(), N_taps, and itpp::zeros_c().

Referenced by filter(), and filter().

◆ filter_known_channel() [2/2]

void itpp::TDL_Channel::filter_known_channel ( const cvec &  input,
cvec &  output,
const cmat &  channel_coeff 
)

Filter the input with the known channel values channel_coeff (e.g. from the generate function)

Definition at line 1300 of file channel.cpp.

References itpp::concat(), d_prof, itpp::elem_mult(), itpp::max(), N_taps, and itpp::zeros_c().

◆ filter() [1/6]

void itpp::TDL_Channel::filter ( const cvec &  input,
cvec &  output,
Array< cvec > &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1311 of file channel.cpp.

References filter_known_channel(), and generate().

Referenced by filter(), filter(), filter(), filter(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ filter() [2/6]

void itpp::TDL_Channel::filter ( const cvec &  input,
cvec &  output,
cmat &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1317 of file channel.cpp.

References filter_known_channel(), and generate().

◆ filter() [3/6]

cvec itpp::TDL_Channel::filter ( const cvec &  input,
Array< cvec > &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1323 of file channel.cpp.

References filter().

◆ filter() [4/6]

cvec itpp::TDL_Channel::filter ( const cvec &  input,
cmat &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1330 of file channel.cpp.

References filter().

◆ filter() [5/6]

void itpp::TDL_Channel::filter ( const cvec &  input,
cvec &  output 
)

Generate channel coefficients and filter the input. Only return the output.

Definition at line 1337 of file channel.cpp.

References filter().

◆ filter() [6/6]

cvec itpp::TDL_Channel::filter ( const cvec &  input)

Generate channel coefficients and filter the input. Only return output.

Definition at line 1343 of file channel.cpp.

References filter().

◆ operator()() [1/5]

void itpp::TDL_Channel::operator() ( const cvec &  input,
cvec &  output,
Array< cvec > &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1351 of file channel.cpp.

References filter().

◆ operator()() [2/5]

void itpp::TDL_Channel::operator() ( const cvec &  input,
cvec &  output,
cmat &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1356 of file channel.cpp.

References filter().

◆ operator()() [3/5]

cvec itpp::TDL_Channel::operator() ( const cvec &  input,
Array< cvec > &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1362 of file channel.cpp.

References filter().

◆ operator()() [4/5]

cvec itpp::TDL_Channel::operator() ( const cvec &  input,
cmat &  channel_coeff 
)

Generate channel coefficients and filter the input. Return output and channel coefficients.

Definition at line 1367 of file channel.cpp.

References filter().

◆ operator()() [5/5]

cvec itpp::TDL_Channel::operator() ( const cvec &  input)

Generate channel coefficients and filter the input. Only return output.

Definition at line 1372 of file channel.cpp.

References filter().

◆ calc_impulse_response()

void itpp::TDL_Channel::calc_impulse_response ( const Array< cvec > &  channel_coeff,
Array< cvec > &  impulse_response 
)

Calculate impulse-response on the supplied channel coefficients (produced by the generate() function)

Definition at line 1378 of file channel.cpp.

References d_prof, init_flag, it_assert, N_taps, itpp::Array< T >::set_size(), and itpp::Array< T >::size().

◆ calc_frequency_response() [1/2]

void itpp::TDL_Channel::calc_frequency_response ( const Array< cvec > &  channel_coeff,
Array< cvec > &  frequency_response,
const int  fft_size 
)

Calculate frequency-response on the supplied channel coefficients (produced by the generate() function)

Definition at line 1398 of file channel.cpp.

References d_prof, itpp::fft(), init_flag, it_assert, N_taps, itpp::Array< T >::set_size(), and itpp::Array< T >::size().

◆ calc_frequency_response() [2/2]

void itpp::TDL_Channel::calc_frequency_response ( const cmat &  channel_coeff,
cmat &  frequency_response,
const int  fft_size 
)

Calculate frequency-response on the supplied channel coefficients (produced by the generate() function)

Definition at line 1422 of file channel.cpp.

References d_prof, itpp::fft(), init_flag, it_assert, N_taps, and itpp::Array< T >::set_size().

◆ get_sampling_time()

double itpp::TDL_Channel::get_sampling_time ( ) const
inline

Return channel sampling time (used for discretization)

Definition at line 990 of file channel.h.

◆ discretize()

void itpp::TDL_Channel::discretize ( const vec &  delay_profile)
protected

Discretize the delay profile with discrete_Ts (Ts). All taps within ((i-0.5)Ts,(i+0.5)Ts] belong to the ith discrete tap.

Parameters
delay_profileDelay profile in seconds.

Definition at line 1447 of file channel.cpp.

References a_prof, d_prof, discrete_Ts, itpp::elem_div(), it_assert, it_warning, los_dopp, los_power, N_taps, itpp::round_i(), itpp::Array< T >::set_size(), itpp::Array< T >::size(), itpp::sqr(), itpp::sqrt(), and tap_doppler_spectrum.

Referenced by set_channel_profile().

Member Data Documentation

◆ init_flag

bool itpp::TDL_Channel::init_flag
protected

◆ a_prof

vec itpp::TDL_Channel::a_prof
protected

◆ d_prof

ivec itpp::TDL_Channel::d_prof
protected

◆ los_power

vec itpp::TDL_Channel::los_power
protected

Relative power for each Rice component.

Definition at line 996 of file channel.h.

Referenced by discretize(), init(), set_LOS(), set_LOS_doppler(), and set_LOS_power().

◆ los_dopp

vec itpp::TDL_Channel::los_dopp
protected

Relative LOS Doppler for each Rice component.

Definition at line 997 of file channel.h.

Referenced by discretize(), init(), set_LOS(), set_LOS_doppler(), and set_LOS_power().

◆ N_taps

int itpp::TDL_Channel::N_taps
protected

◆ n_dopp

double itpp::TDL_Channel::n_dopp
protected

◆ fading_type

FADING_TYPE itpp::TDL_Channel::fading_type
protected

Fading type: Independent (default), Static or Correlated.

Definition at line 1000 of file channel.h.

Referenced by init(), set_correlated_method(), set_fading_type(), and set_norm_doppler().

◆ method

CORRELATED_METHOD itpp::TDL_Channel::method
protected

Correlated fading generation method: Rice_MEDS (default), IFFT or FIR.

Definition at line 1001 of file channel.h.

Referenced by init(), set_correlated_method(), set_doppler_spectrum(), set_doppler_spectrum(), set_filter_length(), and set_no_frequencies().

◆ tap_doppler_spectrum

Array<DOPPLER_SPECTRUM> itpp::TDL_Channel::tap_doppler_spectrum
protected

Doppler spectrum for each tap.

Definition at line 1002 of file channel.h.

Referenced by discretize(), init(), set_channel_profile(), set_channel_profile(), set_doppler_spectrum(), set_doppler_spectrum(), TDL_Channel(), and TDL_Channel().

◆ fading_gen

Array<Fading_Generator *> itpp::TDL_Channel::fading_gen
protected

Fading generators for each tap.

Definition at line 1003 of file channel.h.

Referenced by generate(), generate(), get_time_offset(), init(), set_time_offset(), shift_time_offset(), and ~TDL_Channel().

◆ filter_length

int itpp::TDL_Channel::filter_length
protected

Filter length of FIR fading generator.

Definition at line 1004 of file channel.h.

Referenced by init(), and set_filter_length().

◆ nrof_freq

int itpp::TDL_Channel::nrof_freq
protected

Number of sine frequencies in the Rice MEDS fading generator.

Definition at line 1005 of file channel.h.

Referenced by init(), and set_no_frequencies().

◆ discrete_Ts

double itpp::TDL_Channel::discrete_Ts
protected

Sampling time of discretization.

Definition at line 1006 of file channel.h.

Referenced by discretize(), and set_channel_profile().


The documentation for this class was generated from the following files:

Generated on Tue Aug 17 2021 10:59:15 for IT++ by Doxygen 1.9.8