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_SPECTRUM > | tap_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:

where is the number of channel taps, is the average amplitude at delay , and is the channel phase of the channel tap. The average power profile, and delay profile are defined as:

and

respectively. We assume without loss of generality that and .

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

- avg_power_dB Average power profile , given in dB
- delay_profile Delay profile , 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 , where is the maximum Doppler frequency and 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);
}
itpp::Array
General array class.
Definition array.h:105
itpp::Channel_Specification
General specification of a time-domain multipath channel.
Definition channel.h:697
itpp::TDL_Channel
Tapped Delay Line (TDL) channel model.
Definition channel.h:858
itcomm.h
Include file for the IT++ communications module.
itpp
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(), itpp::Array< T >::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 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 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(), itpp::Array< T >::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 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_profile | Delay 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

Channel ready to produce data.

Definition at line 993 of file channel.h.

Referenced by calc_frequency_response(), calc_frequency_response(), calc_impulse_response(), generate(), generate(), init(), set_channel_profile(), set_channel_profile(), set_correlated_method(), set_doppler_spectrum(), set_doppler_spectrum(), set_fading_type(), set_filter_length(), set_LOS_doppler(), set_LOS_power(), set_no_frequencies(), set_norm_doppler(), set_time_offset(), and shift_time_offset().

## a_prof

vec itpp::TDL_Channel::a_prof

protected

Average amplitude of each tap.

Definition at line 994 of file channel.h.

Referenced by calc_mean_excess_delay(), calc_rms_delay_spread(), discretize(), generate(), generate(), get_avg_power_dB(), get_channel_profile(), set_channel_profile(), and set_channel_profile().

## d_prof

ivec itpp::TDL_Channel::d_prof

protected

Delay in samples for each tap.

Definition at line 995 of file channel.h.

Referenced by calc_frequency_response(), calc_frequency_response(), calc_impulse_response(), calc_mean_excess_delay(), calc_rms_delay_spread(), discretize(), filter_known_channel(), filter_known_channel(), get_channel_profile(), and set_channel_profile().

## 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

Number of taps.

Definition at line 998 of file channel.h.

Referenced by calc_frequency_response(), calc_frequency_response(), calc_impulse_response(), discretize(), filter_known_channel(), filter_known_channel(), generate(), generate(), init(), set_channel_profile(), set_channel_profile(), set_doppler_spectrum(), set_doppler_spectrum(), set_LOS(), set_LOS_power(), set_time_offset(), and shift_time_offset().

## n_dopp

double itpp::TDL_Channel::n_dopp

protected

Normalized Doppler of the correlated fading.

Definition at line 999 of file channel.h.

Referenced by init(), set_doppler_spectrum(), set_doppler_spectrum(), set_filter_length(), set_LOS_doppler(), set_no_frequencies(), set_norm_doppler(), set_time_offset(), and shift_time_offset().

## 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:

- itpp/comm/channel.h
- itpp/comm/channel.cpp

Generated on Mon Jun 10 2024 11:49:41 for IT++ by Doxygen 1.9.8