IT++ Logo Newcom Logo

itpp::Channel_Specification Class Reference
[Communication Channel Models]

General specification of a time-domain multipath channel. More...

#include <itpp/comm/channel.h>

List of all members.

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_SPECTRUMtap_doppler_spectrum
int N_taps
double los_dopp
double los_power
bool discrete
double discrete_Ts


Detailed Description

General specification of a time-domain multipath channel.

Author:
Tony Ottosson
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:

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

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.


Constructor & Destructor Documentation

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]
 

Destructor.

Definition at line 527 of file channel.h.


Member Function Documentation

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 it_assert, itpp::min(), and N_taps.

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

Return power profile in dB.

Definition at line 698 of file channel.cpp.

References a_prof_dB.

vec itpp::Channel_Specification::get_delay_prof  ) 
 

Return delay profile in seconds.

Definition at line 703 of file channel.cpp.

References d_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, 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.

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.

int itpp::Channel_Specification::taps  )  [inline]
 

Return the number of channel taps.

Definition at line 559 of file channel.h.

References N_taps.

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::inv_dB(), it_assert, and tap_doppler_spectrum.


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

Generated on Thu Apr 19 14:24:03 2007 for IT++ by Doxygen 1.4.6