IT++ Logo
itpp::Channel_Specification Class Reference

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_SPECTRUMget_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_SPECTRUMtap_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.
 

Detailed Description

General specification of a time-domain multipath channel.

Author
Tony Ottosson and Adam Piatyszek

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), \]

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 the delay profiles 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 class 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 seconds. The delay profile should be sorted (increasing delay) and the first delay has to be 0.

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:

  • ITU Channel models:
    • ITU_Vehicular_A, 6-tap channel
    • ITU_Vehicular_B, 6-tap channel
    • ITU_Pedestrian_A, 4-tap channel
    • ITU_Pedestrian_B, 6-tap channel
  • COST 207 Channel models (see [Pat02] pp. 259-266):
    • COST207_RA, Rural area, 4-tap channel
    • COST207_RA6, Rural area, 6-tap channel
    • COST207_TU, Typical urban, 6-tap channel
    • COST207_TU6alt, Typical urban, alternative 6-tap channel
    • COST207_TU12, Typical urban, 12-tap channel
    • COST207_TU12alt, Typical urban, alternative 12-tap channel
    • COST207_BU, Bad urban, 6-tap channel
    • COST207_BU6alt, Bad urban, alternative 6-tap channel
    • COST207_BU12, Bad urban, 12-tap channel
    • COST207_BU12alt, Bad urban, alternative 12-tap channel
    • COST207_HT, Hilly terrain, 6-tap channel
    • COST207_HT6alt, Hilly terrain, alternative 6-tap channel
    • COST207_HT12, Hilly terrain, 12-tap channel
    • COST207_HT12alt, Hilly terrain, alternative 12-tap channel
  • COST 259 Channel models (see [3GPP_TR_25.943]):
    • COST259_TUx, Typical urban, 20-tap channel
    • COST259_RAx, Rural ara, 10-tap channel
    • COST259_HTx, Hilly terrain, 20-tap channel

References:

  • [Pat02] Matthias Patzold, 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 696 of file channel.h.

Constructor & Destructor Documentation

◆ Channel_Specification() [1/2]

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().

◆ Channel_Specification() [2/2]

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().

◆ ~Channel_Specification()

virtual itpp::Channel_Specification::~Channel_Specification ( )
inlinevirtual

Destructor.

Definition at line 704 of file channel.h.

Member Function Documentation

◆ set_channel_profile() [1/2]

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().

◆ set_channel_profile() [2/2]

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().

◆ set_doppler_spectrum() [1/2]

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().

◆ set_doppler_spectrum() [2/2]

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.

◆ set_LOS() [1/2]

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().

◆ set_LOS() [2/2]

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

◆ get_channel_profile()

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().

◆ get_avg_power_dB()

vec itpp::Channel_Specification::get_avg_power_dB ( ) const
inline

Return power profile in dB.

Definition at line 724 of file channel.h.

◆ get_delay_prof()

vec itpp::Channel_Specification::get_delay_prof ( ) const
inline

Return delay profile in seconds.

Definition at line 726 of file channel.h.

◆ get_doppler_spectrum() [1/2]

Array< DOPPLER_SPECTRUM > itpp::Channel_Specification::get_doppler_spectrum ( ) const
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().

◆ get_doppler_spectrum() [2/2]

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.

◆ get_LOS_power() [1/2]

vec itpp::Channel_Specification::get_LOS_power ( ) const
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().

◆ get_LOS_doppler() [1/2]

vec itpp::Channel_Specification::get_LOS_doppler ( ) const
inline

Get relative Doppler for each tap.

Definition at line 734 of file channel.h.

Referenced by itpp::TDL_Channel::set_channel_profile().

◆ get_LOS_power() [2/2]

double itpp::Channel_Specification::get_LOS_power ( int tap_number) const
inline

Get relative power (Rice factor) for tap tap_number.

Definition at line 736 of file channel.h.

◆ get_LOS_doppler() [2/2]

double itpp::Channel_Specification::get_LOS_doppler ( int tap_number) const
inline

Get relative Doppler for tap tap_number.

Definition at line 738 of file channel.h.

◆ taps()

int itpp::Channel_Specification::taps ( ) const
inline

Return the number of channel taps.

Definition at line 741 of file channel.h.

◆ calc_mean_excess_delay()

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().

◆ calc_rms_delay_spread()

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().

Member Data Documentation

◆ a_prof_dB

vec itpp::Channel_Specification::a_prof_dB
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().

◆ d_prof

vec itpp::Channel_Specification::d_prof
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().

◆ tap_doppler_spectrum

Array<DOPPLER_SPECTRUM> itpp::Channel_Specification::tap_doppler_spectrum
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().

◆ N_taps

int itpp::Channel_Specification::N_taps
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().

◆ los_power

vec itpp::Channel_Specification::los_power
protected

Relative power for each Rice component.

Definition at line 753 of file channel.h.

Referenced by set_LOS(), and set_LOS().

◆ los_dopp

vec itpp::Channel_Specification::los_dopp
protected

Relative Rice Doppler for each Rice component.

Definition at line 754 of file channel.h.

Referenced by set_LOS(), and set_LOS().


The documentation for this class was generated from the following files:

Generated on Tue Aug 17 2021 10:59:15 for IT++ by Doxygen 1.12.0