#include <itpp/comm/channel.h>
Public Member Functions | |
Channel_Specification (const vec &avg_power_dB="0", const vec &delay_prof="0") | |
Initialize the average power profile in dB, and power delay profile in seconds. | |
Channel_Specification (const CHANNEL_PROFILE profile) | |
Initialize with predetermined channel profile. | |
virtual | ~Channel_Specification () |
Destructor. | |
void | set_channel_profile (const vec &avg_power_dB="0", const vec &delay_prof="0") |
Set both average power profile in dB and power delay profile in seconds. | |
void | set_channel_profile (const CHANNEL_PROFILE profile) |
Set channel profile to a predetermined profile. | |
void | set_doppler_spectrum (DOPPLER_SPECTRUM *tap_spectrum) |
Set doppler spectrum for each tap in the channel profile. If not set default is Jakes. | |
void | set_doppler_spectrum (const int tap_number, DOPPLER_SPECTRUM tap_spectrum) |
Set doppler spectrum for tap tap_number in the channel profile. | |
void | set_LOS (const double relative_power, const double relative_doppler) |
void | get_channel_profile (vec &avg_power_dB, vec &delay_prof) |
Get both average power profile in dB and power delay profile in seconds. | |
vec | get_avg_power_dB () |
Return power profile in dB. | |
vec | get_delay_prof () |
Return delay profile in seconds. | |
DOPPLER_SPECTRUM | get_doppler_spectrum (const int index) |
Get doppler spectrum for tap index . | |
double | get_LOS_power () |
Get LOS relative power (Rice factor) on first tap (zero delay). Only if fist tap is of type Rice spectrum. | |
double | get_LOS_doppler () |
Get LOS doppler (relative to the maximum doppler) on first tap (zero delay). Only if fist tap is of type Rice spectrum. | |
int | taps () |
Return the number of channel taps. | |
double | calc_mean_excess_delay () |
Calculate mean excess delay in samples. | |
double | calc_rms_delay_spread () |
Calculate RMS delay spread in samples. | |
bool | is_discrete () |
Return true if channel profile is discretized. False otherwise. | |
double | get_discrete_Ts () |
Get discrete Ts value. | |
void | discretize (const double Ts) |
Discretize the channel profile with resolution Ts . All taps within ((i-0.5)Ts,(i+0.5)Ts] will belong to the ith discrete tap. | |
Protected Attributes | |
vec | a_prof_dB |
vec | d_prof |
Array< DOPPLER_SPECTRUM > | tap_doppler_spectrum |
int | N_taps |
double | los_dopp |
double | los_power |
bool | discrete |
double | discrete_Ts |
This class does NOT generate any channel values. It is only used to specify a channel and to help resampling it to fit the sample time
Ts
of your need. To generate channel coefficients use the Tapped-Delay Line (TDL) class TDL_Channel.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
th channel tap. The average power profile, and the delay profiles are defined as:
and
respectively. We assume without loss of generality that and
.
To initialize the class the following parameters should be defined:
It is also possible to specify a predefined channel. The existing are:
Before assigning a channel specification to your TDL_Channel class the channel need to be discretized. This is done by calling discretize(Ts) where Ts
is the sample time.
References:
[P"atzold] Matthias P"atzold, Mobile fading channels, Wiley, 2002.
[3GPP TR 25.943] Technical Specification Group Radio Access Networs; Deployment aspects. Version 5.1.0 (2002-06).
Definition at line 519 of file channel.h.
itpp::Channel_Specification::Channel_Specification | ( | const vec & | avg_power_dB = "0" , |
|
const vec & | delay_prof = "0" | |||
) |
Initialize the average power profile in dB, and power delay profile in seconds.
Definition at line 444 of file channel.cpp.
References set_channel_profile().
itpp::Channel_Specification::Channel_Specification | ( | const CHANNEL_PROFILE | profile | ) |
Initialize with predetermined channel profile.
Definition at line 449 of file channel.cpp.
References set_channel_profile().
virtual itpp::Channel_Specification::~Channel_Specification | ( | ) | [inline, virtual] |
void itpp::Channel_Specification::set_channel_profile | ( | const vec & | avg_power_dB = "0" , |
|
const vec & | delay_prof = "0" | |||
) |
Set both average power profile in dB and power delay profile in seconds.
Definition at line 454 of file channel.cpp.
References a_prof_dB, d_prof, discrete, it_assert, itpp::Jakes, itpp::min(), N_taps, and tap_doppler_spectrum.
Referenced by Channel_Specification(), and set_channel_profile().
void itpp::Channel_Specification::set_channel_profile | ( | const CHANNEL_PROFILE | profile | ) |
Set channel profile to a predetermined profile.
Definition at line 478 of file channel.cpp.
References itpp::COST207_BU, itpp::COST207_BU12, itpp::COST207_BU12alt, itpp::COST207_BU6alt, itpp::COST207_HT, itpp::COST207_HT12, itpp::COST207_HT12alt, itpp::COST207_HT6alt, itpp::COST207_RA, itpp::COST207_RA6, itpp::COST207_TU, itpp::COST207_TU12, itpp::COST207_TU12alt, itpp::COST207_TU6alt, itpp::COST259_HTx, itpp::COST259_RAx, itpp::COST259_TUx, itpp::GaussI, itpp::GaussII, itpp::ITU_Pedestrian_A, itpp::ITU_Pedestrian_B, itpp::ITU_Vehicular_A, itpp::ITU_Vehicular_B, itpp::Rice, set_channel_profile(), set_doppler_spectrum(), set_LOS(), and itpp::sqr().
void itpp::Channel_Specification::set_doppler_spectrum | ( | DOPPLER_SPECTRUM * | tap_spectrum | ) |
Set doppler spectrum for each tap in the channel profile. If not set default is Jakes.
Definition at line 670 of file channel.cpp.
References N_taps, and tap_doppler_spectrum.
Referenced by set_channel_profile().
void itpp::Channel_Specification::set_doppler_spectrum | ( | const int | tap_number, | |
DOPPLER_SPECTRUM | tap_spectrum | |||
) |
Set doppler spectrum for tap tap_number
in the channel profile.
Definition at line 676 of file channel.cpp.
References tap_doppler_spectrum.
void itpp::Channel_Specification::set_LOS | ( | const double | relative_power, | |
const double | relative_doppler | |||
) |
Set LOS component for the first tap (zero delay). Only possible if Rice is chosen as doppler spectrum. Relative power (Rice factor) and doppler relative the maximum doppler frequency.
Definition at line 681 of file channel.cpp.
References it_assert, los_dopp, los_power, N_taps, itpp::Rice, and tap_doppler_spectrum.
Referenced by set_channel_profile().
void itpp::Channel_Specification::get_channel_profile | ( | vec & | avg_power_dB, | |
vec & | delay_prof | |||
) |
Get both average power profile in dB and power delay profile in seconds.
Definition at line 692 of file channel.cpp.
References a_prof_dB, and d_prof.
Referenced by itpp::TDL_Channel::set_channel_profile().
vec itpp::Channel_Specification::get_avg_power_dB | ( | ) |
vec itpp::Channel_Specification::get_delay_prof | ( | ) |
DOPPLER_SPECTRUM itpp::Channel_Specification::get_doppler_spectrum | ( | const int | index | ) |
Get doppler spectrum for tap index
.
Definition at line 708 of file channel.cpp.
References it_assert, N_taps, and tap_doppler_spectrum.
Referenced by itpp::TDL_Channel::TDL_Channel().
double itpp::Channel_Specification::get_LOS_power | ( | ) |
Get LOS relative power (Rice factor) on first tap (zero delay). Only if fist tap is of type Rice spectrum.
Definition at line 714 of file channel.cpp.
References los_power.
Referenced by itpp::TDL_Channel::TDL_Channel().
double itpp::Channel_Specification::get_LOS_doppler | ( | ) |
Get LOS doppler (relative to the maximum doppler) on first tap (zero delay). Only if fist tap is of type Rice spectrum.
Definition at line 719 of file channel.cpp.
References los_dopp.
Referenced by itpp::TDL_Channel::TDL_Channel().
int itpp::Channel_Specification::taps | ( | ) | [inline] |
double itpp::Channel_Specification::calc_mean_excess_delay | ( | ) |
Calculate mean excess delay in samples.
Definition at line 724 of file channel.cpp.
References a_prof_dB, d_prof, itpp::inv_dB(), and itpp::sum().
double itpp::Channel_Specification::calc_rms_delay_spread | ( | ) |
Calculate RMS delay spread in samples.
Definition at line 732 of file channel.cpp.
References a_prof_dB, d_prof, itpp::inv_dB(), itpp::sqr(), itpp::sqrt(), and itpp::sum().
bool itpp::Channel_Specification::is_discrete | ( | ) | [inline] |
Return true if channel profile is discretized. False otherwise.
Definition at line 567 of file channel.h.
References discrete.
Referenced by itpp::TDL_Channel::set_channel_profile().
double itpp::Channel_Specification::get_discrete_Ts | ( | ) | [inline] |
Get discrete Ts value.
Definition at line 569 of file channel.h.
References discrete_Ts.
Referenced by itpp::TDL_Channel::set_channel_profile().
void itpp::Channel_Specification::discretize | ( | const double | Ts | ) |
Discretize the channel profile with resolution Ts
. All taps within ((i-0.5)Ts,(i+0.5)Ts] will belong to the ith discrete tap.
Definition at line 744 of file channel.cpp.
References a_prof_dB, d_prof, itpp::dB(), discrete, discrete_Ts, itpp::inv_dB(), it_assert, it_warning, N_taps, itpp::Rice, and tap_doppler_spectrum.
Generated on Thu Aug 30 02:47:24 2007 for IT++ by Doxygen 1.5.3