IT++ Logo
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:

  • avg_power_dB Average power profile $ \mathbf{a} $, given in dB
  • delay_profile Delay profile $ \mathbf{\tau} $, given in samples. The delay profile should be sorted (increasing delay) and the first delay has to be 0.

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:

  • FIR - Finite Impulse Response (FIR) filter. Rather slow and inaccurate. Use with care.
  • IFFT - Blockwise filtering in the frequency-domain. Consecutive blocks have independent fading. Very efficient method for large blocks.

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:

  • FIR - filter FIR method
  • IFFT - filter IFFT method
  • Rice_MEDS - sum of sine waves MEDS method

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
Channel_Specification channel_spec(COST259_RAx);
// initialize with the predefined channel profile
TDL_Channel channel(channel_spec, Ts);
// 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);
cvec transmitted_signal;
// -----------------------------------------------
// Your code here generates the transmitted signal
// -----------------------------------------------
// Channel coefficients are returned in the 'coeff' array of complex values
Array<cvec> coeff;
cvec received_signal = channel(transmitted_signal, coeff);
}
General array class.
Definition factory.h:40
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:

  • [Pat02] Matthias Patzold, Mobile fading channels, Wiley, 2002.
  • [Stu01] Gordon L. Stuber, Principles of mobile communication, 2nd. ed., Kluwer, 2001.
  • [Rap96] Theodore S. Rappaport, Wireless communications: principles and practise, Prentice Hall, 1996.

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" )

Default constructor.

Definition at line 851 of file channel.cpp.

References set_channel_profile(), set_LOS(), itpp::Array< T >::set_size(), tap_doppler_spectrum, and itpp::zeros().

◆ 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 itpp::Channel_Specification::get_doppler_spectrum(), 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.

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 both average power profile in dB and power delay profile in samples.

Definition at line 887 of file channel.cpp.

References a_prof, d_prof, init_flag, it_assert, itpp::min(), N_taps, itpp::norm(), itpp::pow(), set_LOS(), itpp::Array< T >::set_size(), tap_doppler_spectrum, and itpp::zeros().

Referenced by set_channel_profile_exponential(), set_channel_profile_uniform(), TDL_Channel(), and TDL_Channel().

◆ 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_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, and N_taps.

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, and N_taps.

◆ 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, and n_dopp.

◆ 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, 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, and N_taps.

◆ 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, and N_taps.

◆ 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

◆ a_prof

vec itpp::TDL_Channel::a_prof
protected

◆ d_prof

◆ 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

◆ 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:
SourceForge Logo

Generated on Mon Apr 7 2025 07:53:18 for IT++ by Doxygen 1.11.0