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:
![\[ h(t) = \sum_{k=0}^{N_\mathrm{taps}-1} a_k \exp (-j \theta_k)
\delta(t-\tau_k), \]](form_110.png)
where 




![\[ \mathbf{a} = [a_0, a_1, \ldots, a_{N_\mathrm{taps}-1}] \]](form_89.png)
and
![\[ \mathbf{\tau} = [\tau_0, \tau_1, \ldots, \tau_{N_\mathrm{taps}-1}],
\]](form_90.png)
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(), 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 = "" ) |
| 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.
References a_prof_dB, and d_prof.
Referenced by itpp::TDL_Channel::set_channel_profile().
|
inline |
|
inline |
|
inline |
Get doppler spectrum for tap index.
Definition at line 728 of file channel.h.
Referenced by itpp::TDL_Channel::set_channel_profile(), and itpp::TDL_Channel::TDL_Channel().
| 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 |
Get relative power (Rice factor) for each tap.
Definition at line 732 of file channel.h.
Referenced by itpp::TDL_Channel::set_channel_profile().
|
inline |
Get relative Doppler for each tap.
Definition at line 734 of file channel.h.
Referenced by itpp::TDL_Channel::set_channel_profile().
|
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 Tue Dec 10 2024 04:49:37 for IT++ by Doxygen 1.12.0