General specification of a time-domain multipath channel. More...
#include <itpp/comm/channel.h>
Public Member Functions | |
Channel_Specification (const vec &avg_power_dB="0", const vec &delay_prof="0") | |
Default constructor (power profile in dB, 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, const vec &delay_prof) |
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. | |
void | set_doppler_spectrum (int tap_number, DOPPLER_SPECTRUM tap_spectrum) |
Set doppler spectrum for tap tap_number in the channel profile. | |
void | set_LOS (int tap_number, double relative_power, double relative_doppler=0.7) |
Set LOS (Rice) components for tap tap_number. | |
void | set_LOS (const vec &relative_power, const vec &relative_doppler="") |
Set LOS (Rice) components for all taps. | |
void | get_channel_profile (vec &avg_power_dB, vec &delay_prof) const |
Get both average power profile in dB and power delay profile in seconds. | |
vec | get_avg_power_dB () const |
Return power profile in dB. | |
vec | get_delay_prof () const |
Return delay profile in seconds. | |
Array< DOPPLER_SPECTRUM > | get_doppler_spectrum () const |
Get doppler spectrum for tap index. | |
DOPPLER_SPECTRUM | get_doppler_spectrum (int index) const |
Get doppler spectrum for tap index. | |
vec | get_LOS_power () const |
Get relative power (Rice factor) for each tap. | |
vec | get_LOS_doppler () const |
Get relative 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 for tap tap_number. | |
int | taps () const |
Return the number of channel taps. | |
double | calc_mean_excess_delay () const |
Calculate mean excess delay in samples. | |
double | calc_rms_delay_spread () const |
Calculate RMS delay spread in samples. | |
Protected Attributes | |
vec | a_prof_dB |
Power profile in dB. | |
vec | d_prof |
Delay profile in seconds. | |
Array< DOPPLER_SPECTRUM > | tap_doppler_spectrum |
Doppler spectrum for each tap. | |
int | N_taps |
Number of taps. | |
vec | los_power |
Relative power for each Rice component. | |
vec | los_dopp |
Relative Rice Doppler for each Rice component. | |
General specification of a time-domain multipath channel.
This class does NOT generate any channel values. It is only used to specify the channel model. 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
and
respectively. We assume without loss of generality that
To initialize the class the following parameters should be defined:
Optionally one can define LOS parameters: relative_power and relative_doppler, and additionally the kind of Doppler spectrum for each tap.
It is also possible to specify a predefined channel model. The implemented ones are as follows:
References:
itpp::Channel_Specification::Channel_Specification | ( | const vec & | avg_power_dB = "0" , |
const vec & | delay_prof = "0" |
||
) |
Default constructor (power profile in dB, delay profile in seconds)
Definition at line 531 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 537 of file channel.cpp.
References set_channel_profile().
|
inlinevirtual |
void itpp::Channel_Specification::set_channel_profile | ( | const vec & | avg_power_dB, |
const vec & | delay_prof | ||
) |
Set both average power profile in dB and power delay profile in seconds.
Definition at line 542 of file channel.cpp.
References a_prof_dB, d_prof, it_assert, itpp::min(), N_taps, set_LOS(), itpp::Array< T >::set_size(), itpp::Array< T >::size(), tap_doppler_spectrum, and itpp::zeros().
Referenced by Channel_Specification(), 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 567 of file channel.cpp.
References 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.
Definition at line 756 of file channel.cpp.
References N_taps, and tap_doppler_spectrum.
Referenced by set_channel_profile().
void itpp::Channel_Specification::set_doppler_spectrum | ( | int | tap_number, |
DOPPLER_SPECTRUM | tap_spectrum | ||
) |
Set doppler spectrum for tap tap_number in the channel profile.
Definition at line 762 of file channel.cpp.
References tap_doppler_spectrum.
void itpp::Channel_Specification::set_LOS | ( | int | tap_number, |
double | relative_power, | ||
double | relative_doppler = 0.7 |
||
) |
Set LOS (Rice) components for tap tap_number.
Definition at line 767 of file channel.cpp.
References it_assert, los_dopp, los_power, and N_taps.
Referenced by set_channel_profile(), and set_channel_profile().
void itpp::Channel_Specification::set_LOS | ( | const vec & | relative_power, |
const vec & | relative_doppler = "" |
||
) |
Set LOS (Rice) components for all taps.
Definition at line 785 of file channel.cpp.
References it_assert, los_dopp, los_power, N_taps, and itpp::Array< T >::size().
void itpp::Channel_Specification::get_channel_profile | ( | vec & | avg_power_dB, |
vec & | delay_prof | ||
) | const |
Get both average power profile in dB and power delay profile in seconds.
Definition at line 817 of file channel.cpp.
|
inline |
|
inline |
|
inline |
DOPPLER_SPECTRUM itpp::Channel_Specification::get_doppler_spectrum | ( | int | index | ) | const |
Get doppler spectrum for tap index.
Definition at line 824 of file channel.cpp.
References it_assert, N_taps, and tap_doppler_spectrum.
|
inline |
|
inline |
|
inline |
double itpp::Channel_Specification::calc_mean_excess_delay | ( | ) | const |
Calculate mean excess delay in samples.
Definition at line 831 of file channel.cpp.
References a_prof_dB, d_prof, itpp::inv_dB(), and itpp::sum().
double itpp::Channel_Specification::calc_rms_delay_spread | ( | ) | const |
Calculate RMS delay spread in samples.
Definition at line 837 of file channel.cpp.
References a_prof_dB, d_prof, itpp::inv_dB(), itpp::sqr(), and itpp::sum().
|
protected |
Power profile in dB.
Definition at line 749 of file channel.h.
Referenced by calc_mean_excess_delay(), calc_rms_delay_spread(), get_channel_profile(), and set_channel_profile().
|
protected |
Delay profile in seconds.
Definition at line 750 of file channel.h.
Referenced by calc_mean_excess_delay(), calc_rms_delay_spread(), get_channel_profile(), and set_channel_profile().
|
protected |
Doppler spectrum for each tap.
Definition at line 751 of file channel.h.
Referenced by get_doppler_spectrum(), set_channel_profile(), set_doppler_spectrum(), and set_doppler_spectrum().
|
protected |
Number of taps.
Definition at line 752 of file channel.h.
Referenced by get_doppler_spectrum(), set_channel_profile(), set_doppler_spectrum(), set_LOS(), and set_LOS().
|
protected |
|
protected |
Generated on Mon Jun 10 2024 11:49:34 for IT++ by Doxygen 1.9.8