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_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.

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

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

- avg_power_dB Average power profile , given in dB
- delay_profile Delay profile , 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(), itpp::Array< T >::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, N_taps, and itpp::Array< T >::size().

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

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

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

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

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

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

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