channel.h
Go to the documentation of this file.
#ifndef CHANNEL_H
#define CHANNEL_H
#include <iostream>
#include <itpp/base/math/elem_math.h>
#include <itpp/base/mat.h>
#include <itpp/base/array.h>
#include <itpp/base/random.h>
#include <itpp/signal/filter.h>
#include <itpp/itexports.h>
namespace itpp
{
enum CHANNEL_PROFILE {
ITU_Vehicular_A, ITU_Vehicular_B, ITU_Pedestrian_A, ITU_Pedestrian_B,
COST207_RA, COST207_RA6,
COST207_TU, COST207_TU6alt, COST207_TU12, COST207_TU12alt,
COST207_BU, COST207_BU6alt, COST207_BU12, COST207_BU12alt,
COST207_HT, COST207_HT6alt, COST207_HT12, COST207_HT12alt,
COST259_TUx, COST259_RAx, COST259_HTx
};
enum FADING_TYPE { Independent, Static, Correlated };
enum CORRELATED_METHOD { Rice_MEDS, IFFT, FIR };
enum RICE_METHOD { MEDS };
enum DOPPLER_SPECTRUM {
Jakes = 0, J = 0, Classic = 0, C = 0,
GaussI = 1, Gauss1 = 1, GI = 1, G1 = 1,
GaussII = 2, Gauss2 = 2, GII = 2, G2 = 2
};
class ITPP_EXPORT Fading_Generator
{
public:
Fading_Generator();
virtual ~Fading_Generator() {}
void set_LOS_power(double relative_power);
virtual void set_LOS_doppler(double relative_doppler);
virtual void set_time_offset(int offset);
virtual void set_filter_length(int filter_length);
virtual void set_norm_doppler(double norm_doppler);
virtual void set_doppler_spectrum(DOPPLER_SPECTRUM spectrum);
virtual void set_no_frequencies(int no_freq);
virtual void set_rice_method(RICE_METHOD method);
double get_LOS_power() const { return los_power; }
virtual double get_LOS_doppler() const;
virtual double get_time_offset() const;
virtual int get_filter_length() const;
virtual double get_norm_doppler() const;
virtual DOPPLER_SPECTRUM get_doppler_spectrum() const;
virtual int get_no_frequencies() const;
virtual RICE_METHOD get_rice_method() const;
virtual void shift_time_offset(int no_samples);
virtual void init() = 0;
virtual void generate(int no_samples, cvec &output) = 0;
cvec generate(int no_samples);
protected:
bool init_flag;
double los_power;
double los_diffuse;
double los_direct;
};
#if (!defined(_MSC_VER) || (defined(_MSC_VER) && defined (ITPP_SHARED_LIB)))
//define two input stream operators for data types involved
//otherwise explicit instantiation of Array is impossible
inline std::istream& operator>>(std::istream& is, Fading_Generator* &pfg)
{
void* p;
is >> p;
if(is) pfg = (Fading_Generator*)p;
return is;
}
inline std::istream& operator>>(std::istream& is, DOPPLER_SPECTRUM& sp)
{
int val;
is >> val;
if(!is) return is;
if(val > 0 && val <= G2) sp = (DOPPLER_SPECTRUM)val;
else is.setstate(std::ios_base::failbit);
return is;
}
//MSVC explicitly instantiate required template while building the shared library
#ifdef _WIN32
template class ITPP_EXPORT Array<DOPPLER_SPECTRUM>;
template class ITPP_EXPORT Array<Fading_Generator*>;
#endif
#endif
class ITPP_EXPORT Independent_Fading_Generator : public Fading_Generator
{
public:
Independent_Fading_Generator() : Fading_Generator() {}
virtual ~Independent_Fading_Generator() {}
virtual void init() { init_flag = true; }
using Fading_Generator::generate;
virtual void generate(int no_samples, cvec& output);
};
class ITPP_EXPORT Static_Fading_Generator : public Fading_Generator
{
public:
Static_Fading_Generator() : Fading_Generator() {}
virtual ~Static_Fading_Generator() {}
virtual void init();
using Fading_Generator::generate;
virtual void generate(int no_samples, cvec& output);
protected:
double static_sample_re;
double static_sample_im;
};
class ITPP_EXPORT Correlated_Fading_Generator : public Fading_Generator
{
public:
Correlated_Fading_Generator(double norm_doppler);
virtual ~Correlated_Fading_Generator() {}
virtual void set_norm_doppler(double norm_doppler);
virtual void set_LOS_doppler(double relative_doppler);
virtual void set_time_offset(int offset);
virtual double get_norm_doppler() const { return n_dopp; }
virtual double get_LOS_doppler() const { return los_dopp; }
virtual double get_time_offset() const { return time_offset; }
virtual void shift_time_offset(int no_samples);
virtual void init() = 0;
using Fading_Generator::generate;
virtual void generate(int no_samples, cvec& output) = 0;
protected:
double n_dopp;
double los_dopp;
double time_offset;
void add_LOS(int idx, std::complex<double>& sample);
};
class ITPP_EXPORT Rice_Fading_Generator : public Correlated_Fading_Generator
{
public:
Rice_Fading_Generator(double norm_doppler, DOPPLER_SPECTRUM spectrum = Jakes,
int no_freq = 16, RICE_METHOD method = MEDS);
virtual ~Rice_Fading_Generator() {}
virtual void set_doppler_spectrum(DOPPLER_SPECTRUM spectrum);
virtual void set_no_frequencies(int no_freq);
virtual void set_rice_method(RICE_METHOD method);
virtual DOPPLER_SPECTRUM get_doppler_spectrum() const { return dopp_spectrum; }
virtual int get_no_frequencies() const { return Ni; }
virtual RICE_METHOD get_rice_method() const { return rice_method; }
virtual void init();
using Correlated_Fading_Generator::generate;
virtual void generate(int no_samples, cvec &output);
protected:
DOPPLER_SPECTRUM dopp_spectrum;
int Ni;
RICE_METHOD rice_method;
vec f1, f2, c1, c2, th1, th2;
double f01, f02;
void init_MEDS();
};
class ITPP_EXPORT FIR_Fading_Generator : public Correlated_Fading_Generator
{
public:
FIR_Fading_Generator(double norm_doppler, int filter_length = 500);
virtual ~FIR_Fading_Generator() {}
virtual void set_filter_length(int filter_length);
virtual int get_filter_length() const { return fir_length; }
virtual void init();
using Correlated_Fading_Generator::generate;
virtual void generate(int no_samples, cvec &output);
protected:
int fir_length;
int upsample_rate;
MA_Filter<std::complex<double>, double, std::complex<double> > fir_filter;
cvec left_overs;
vec Jakes_filter(double norm_dopp, int order = 100);
};
class ITPP_EXPORT IFFT_Fading_Generator : public Correlated_Fading_Generator
{
public:
IFFT_Fading_Generator(double norm_doppler) :
Correlated_Fading_Generator(norm_doppler) {}
virtual ~IFFT_Fading_Generator() {}
virtual void init() { init_flag = true; }
using Correlated_Fading_Generator::generate;
virtual void generate(int no_samples, cvec &output);
protected:
void generate_Jakes(int no_samples, cvec &output);
};
class ITPP_EXPORT Channel_Specification
{
public:
Channel_Specification(const vec &avg_power_dB = "0", const vec &delay_prof = "0");
Channel_Specification(const CHANNEL_PROFILE profile);
virtual ~Channel_Specification() {}
void set_channel_profile(const vec &avg_power_dB, const vec &delay_prof);
void set_channel_profile(const CHANNEL_PROFILE profile);
void set_doppler_spectrum(DOPPLER_SPECTRUM *tap_spectrum);
void set_doppler_spectrum(int tap_number, DOPPLER_SPECTRUM tap_spectrum);
void set_LOS(int tap_number, double relative_power, double relative_doppler = 0.7);
void set_LOS(const vec& relative_power, const vec& relative_doppler = "");
void get_channel_profile(vec &avg_power_dB, vec &delay_prof) const;
vec get_avg_power_dB() const { return a_prof_dB; }
vec get_delay_prof() const { return d_prof; }
Array<DOPPLER_SPECTRUM> get_doppler_spectrum() const { return tap_doppler_spectrum; }
DOPPLER_SPECTRUM get_doppler_spectrum(int index) const;
vec get_LOS_power() const { return los_power; }
vec get_LOS_doppler() const { return los_dopp; }
double get_LOS_power(int tap_number) const { return los_power(tap_number); }
double get_LOS_doppler(int tap_number) const { return los_dopp(tap_number); }
int taps() const { return N_taps; }
double calc_mean_excess_delay() const;
double calc_rms_delay_spread() const;
protected:
vec a_prof_dB;
vec d_prof;
Array<DOPPLER_SPECTRUM> tap_doppler_spectrum;
int N_taps;
vec los_power;
vec los_dopp;
};
class ITPP_EXPORT TDL_Channel
{
public:
TDL_Channel(const vec &avg_power_dB = "0", const ivec &delay_prof = "0");
TDL_Channel(const Channel_Specification &channel_spec, double sampling_time);
virtual ~TDL_Channel();
void set_channel_profile(const vec &avg_power_dB, const ivec &delay_prof);
void set_channel_profile_uniform(int no_taps);
void set_channel_profile_exponential(int no_taps);
void set_channel_profile(const Channel_Specification &channel_spec, double sampling_time);
void set_correlated_method(CORRELATED_METHOD method);
void set_fading_type(FADING_TYPE fading_type);
void set_norm_doppler(double norm_doppler);
void set_LOS(const vec& relative_power, const vec& relative_doppler = "");
void set_LOS_power(const vec& relative_power);
void set_LOS_doppler(const vec& relative_doppler);
void set_doppler_spectrum(const DOPPLER_SPECTRUM *tap_spectrum);
void set_doppler_spectrum(int tap_number, DOPPLER_SPECTRUM tap_spectrum);
void set_no_frequencies(int no_freq);
void set_time_offset(int offset);
void shift_time_offset(int no_samples);
void set_filter_length(int filter_length);
int taps() const { return N_taps; }
void get_channel_profile(vec &avg_power_dB, ivec &delay_prof) const;
vec get_avg_power_dB() const;
ivec get_delay_prof() const { return d_prof; }
CORRELATED_METHOD get_correlated_method() const { return method; }
FADING_TYPE get_fading_type() const { return fading_type; }
double get_norm_doppler() const { return n_dopp; }
vec get_LOS_power() const { return los_power; }
vec get_LOS_doppler() const { return los_dopp; }
double get_LOS_power(int tap_number) const { return los_power(tap_number); }
double get_LOS_doppler(int tap_number) const { return los_dopp(tap_number); }
int get_no_frequencies() const { return nrof_freq; }
double get_time_offset() const;
double calc_mean_excess_delay() const;
double calc_rms_delay_spread() const;
void init();
void generate(int no_samples, Array<cvec> &channel_coeff);
void generate(int no_samples, cmat &channel_coeff);
void filter_known_channel(const cvec &input, cvec &output, const Array<cvec> &channel_coeff);
void filter_known_channel(const cvec &input, cvec &output, const cmat &channel_coeff);
void filter(const cvec &input, cvec &output, Array<cvec> &channel_coeff);
void filter(const cvec &input, cvec &output, cmat &channel_coeff);
cvec filter(const cvec &input, Array<cvec> &channel_coeff);
cvec filter(const cvec &input, cmat &channel_coeff);
void filter(const cvec &input, cvec &output);
cvec filter(const cvec &input);
void operator()(const cvec &input, cvec &output, Array<cvec> &channel_coeff);
void operator()(const cvec &input, cvec &output, cmat &channel_coeff);
cvec operator()(const cvec &input, Array<cvec> &channel_coeff);
cvec operator()(const cvec &input, cmat &channel_coeff);
cvec operator()(const cvec &input);
void calc_impulse_response(const Array<cvec> &channel_coeff, Array<cvec> &impulse_response);
void calc_frequency_response(const Array<cvec> &channel_coeff, Array<cvec> &frequency_response, const int fft_size);
void calc_frequency_response(const cmat &channel_coeff, cmat &frequency_response, const int fft_size);
double get_sampling_time() const { return discrete_Ts; }
protected:
bool init_flag;
vec a_prof;
ivec d_prof;
vec los_power;
vec los_dopp;
int N_taps;
double n_dopp;
FADING_TYPE fading_type;
CORRELATED_METHOD method;
Array<DOPPLER_SPECTRUM> tap_doppler_spectrum;
Array<Fading_Generator *> fading_gen;
int filter_length;
int nrof_freq;
double discrete_Ts;
void discretize(const vec &delay_profile);
};
class ITPP_EXPORT BSC
{
public:
BSC(double in_p = 0.0) : u(0.0, 1.0) { p = in_p; };
void set_prob(double in_p) { p = in_p; };
double get_prob() const { return p; };
bvec operator()(const bvec &input);
private:
Uniform_RNG u;
double p;
};
class ITPP_EXPORT AWGN_Channel
{
public:
AWGN_Channel(double noisevar = 0.0): sigma(std::sqrt(noisevar)) {}
void set_noise(double noisevar) { sigma = std::sqrt(noisevar); }
double get_noise() const { return sqr(sigma); }
cvec operator()(const cvec &input);
vec operator()(const vec &input);
private:
Complex_Normal_RNG rng_cn;
Normal_RNG rng_n;
double sigma;
};
} // namespace itpp
#endif // #ifndef CHANNEL_H
array.h
Definition of Array class (container)
itpp::AWGN_Channel
Ordinary AWGN Channel for cvec or vec inputs and outputs.
Definition channel.h:1089
itpp::AWGN_Channel::get_noise
double get_noise() const
Get noise variance (for complex-valued channels the sum of real and imaginary parts)
Definition channel.h:1096
itpp::AWGN_Channel::AWGN_Channel
AWGN_Channel(double noisevar=0.0)
Class constructor. Sets the noise variance (for complex-valued channels the sum of real and imaginary...
Definition channel.h:1092
itpp::AWGN_Channel::set_noise
void set_noise(double noisevar)
Set noise variance (for complex-valued channels the sum of real and imaginary parts)
Definition channel.h:1094
itpp::Array
General array class.
Definition array.h:105
itpp::Array::operator()
T & operator()(int i)
Get the i element.
Definition array.h:290
itpp::BSC
A Binary Symetric Channel with crossover probability p.
Definition channel.h:1038
itpp::BSC::get_prob
double get_prob() const
Get crossover (bit error) probability.
Definition channel.h:1045
itpp::BSC::set_prob
void set_prob(double in_p)
Set crossover (bit error) probability.
Definition channel.h:1043
itpp::BSC::BSC
BSC(double in_p=0.0)
Class constructor. Sets the error probability to p.
Definition channel.h:1041
itpp::Channel_Specification
General specification of a time-domain multipath channel.
Definition channel.h:697
itpp::Channel_Specification::los_dopp
vec los_dopp
Relative Rice Doppler for each Rice component.
Definition channel.h:754
itpp::Channel_Specification::N_taps
int N_taps
Number of taps.
Definition channel.h:752
itpp::Channel_Specification::~Channel_Specification
virtual ~Channel_Specification()
Destructor.
Definition channel.h:704
itpp::Channel_Specification::get_LOS_power
vec get_LOS_power() const
Get relative power (Rice factor) for each tap.
Definition channel.h:732
itpp::Channel_Specification::los_power
vec los_power
Relative power for each Rice component.
Definition channel.h:753
itpp::Channel_Specification::tap_doppler_spectrum
Array< DOPPLER_SPECTRUM > tap_doppler_spectrum
Doppler spectrum for each tap.
Definition channel.h:751
itpp::Channel_Specification::a_prof_dB
vec a_prof_dB
Power profile in dB.
Definition channel.h:749
itpp::Channel_Specification::get_LOS_power
double get_LOS_power(int tap_number) const
Get relative power (Rice factor) for tap tap_number.
Definition channel.h:736
itpp::Channel_Specification::get_doppler_spectrum
Array< DOPPLER_SPECTRUM > get_doppler_spectrum() const
Get doppler spectrum for tap index.
Definition channel.h:728
itpp::Channel_Specification::taps
int taps() const
Return the number of channel taps.
Definition channel.h:741
itpp::Channel_Specification::d_prof
vec d_prof
Delay profile in seconds.
Definition channel.h:750
itpp::Channel_Specification::get_delay_prof
vec get_delay_prof() const
Return delay profile in seconds.
Definition channel.h:726
itpp::Channel_Specification::get_LOS_doppler
double get_LOS_doppler(int tap_number) const
Get relative Doppler for tap tap_number.
Definition channel.h:738
itpp::Channel_Specification::get_avg_power_dB
vec get_avg_power_dB() const
Return power profile in dB.
Definition channel.h:724
itpp::Channel_Specification::get_LOS_doppler
vec get_LOS_doppler() const
Get relative Doppler for each tap.
Definition channel.h:734
itpp::Complex_Normal_RNG
A Complex Normal Source.
Definition random.h:580
itpp::Correlated_Fading_Generator
Correlated (random) fading generator class.
Definition channel.h:391
itpp::Correlated_Fading_Generator::get_norm_doppler
virtual double get_norm_doppler() const
Return normalized Doppler.
Definition channel.h:406
itpp::Correlated_Fading_Generator::los_dopp
double los_dopp
Relative Doppler on LOS component (0.7 by default)
Definition channel.h:425
itpp::Correlated_Fading_Generator::n_dopp
double n_dopp
Normalized maximum Doppler frequency.
Definition channel.h:424
itpp::Correlated_Fading_Generator::get_time_offset
virtual double get_time_offset() const
Get time offset in samples.
Definition channel.h:410
itpp::Correlated_Fading_Generator::time_offset
double time_offset
Time offset in samples (time state in the generator)
Definition channel.h:426
itpp::Correlated_Fading_Generator::~Correlated_Fading_Generator
virtual ~Correlated_Fading_Generator()
Destructor.
Definition channel.h:396
itpp::Correlated_Fading_Generator::init
virtual void init()=0
Initialize the generator.
itpp::Correlated_Fading_Generator::generate
virtual void generate(int no_samples, cvec &output)=0
Generate no_samples values from the fading process.
itpp::Correlated_Fading_Generator::get_LOS_doppler
virtual double get_LOS_doppler() const
Get relative Doppler (compared to the maximum doppler) for the LOS component.
Definition channel.h:408
itpp::FIR_Fading_Generator
FIR type Fading generator class.
Definition channel.h:537
itpp::FIR_Fading_Generator::~FIR_Fading_Generator
virtual ~FIR_Fading_Generator()
Destructor.
Definition channel.h:542
itpp::FIR_Fading_Generator::fir_filter
MA_Filter< std::complex< double >, double, std::complex< double > > fir_filter
Filter used for fading generation.
Definition channel.h:561
itpp::FIR_Fading_Generator::left_overs
cvec left_overs
Left-overs from upsampling.
Definition channel.h:562
itpp::FIR_Fading_Generator::fir_length
int fir_length
Size of FIR filter.
Definition channel.h:558
itpp::FIR_Fading_Generator::upsample_rate
int upsample_rate
Definition channel.h:559
itpp::FIR_Fading_Generator::get_filter_length
virtual int get_filter_length() const
Get filter length.
Definition channel.h:547
itpp::Fading_Generator
Fading generator class.
Definition channel.h:229
itpp::Fading_Generator::generate
virtual void generate(int no_samples, cvec &output)=0
Generate no_samples values from the fading process.
itpp::Fading_Generator::get_LOS_power
double get_LOS_power() const
Get relative power of LOS component (Rice factor)
Definition channel.h:254
itpp::Fading_Generator::los_diffuse
double los_diffuse
Diffuse component: sqrt(1 / (1 + los_power))
Definition channel.h:284
itpp::Fading_Generator::init_flag
bool init_flag
signals if generator is initialized or not
Definition channel.h:282
itpp::Fading_Generator::~Fading_Generator
virtual ~Fading_Generator()
Destructor.
Definition channel.h:234
itpp::Fading_Generator::los_direct
double los_direct
Direct component: sqrt(los_power / (1 + los_power))
Definition channel.h:285
itpp::Fading_Generator::los_power
double los_power
Relative power of LOS component compared to diffuse component (K factor)
Definition channel.h:283
itpp::Fading_Generator::init
virtual void init()=0
Initialize the generator.
itpp::IFFT_Fading_Generator
IFFT type Fading generator class.
Definition channel.h:603
itpp::IFFT_Fading_Generator::init
virtual void init()
Initialize the generator.
Definition channel.h:612
itpp::IFFT_Fading_Generator::~IFFT_Fading_Generator
virtual ~IFFT_Fading_Generator()
Destructor.
Definition channel.h:609
itpp::IFFT_Fading_Generator::IFFT_Fading_Generator
IFFT_Fading_Generator(double norm_doppler)
Default constructor.
Definition channel.h:606
itpp::Independent_Fading_Generator
Independent (random) fading generator class.
Definition channel.h:329
itpp::Independent_Fading_Generator::Independent_Fading_Generator
Independent_Fading_Generator()
Default constructor.
Definition channel.h:332
itpp::Independent_Fading_Generator::~Independent_Fading_Generator
virtual ~Independent_Fading_Generator()
Destructor.
Definition channel.h:334
itpp::Independent_Fading_Generator::init
virtual void init()
Initialize the generator.
Definition channel.h:337
itpp::Normal_RNG
Normal distribution.
Definition random.h:441
itpp::Rice_Fading_Generator
Rice type fading generator class.
Definition channel.h:468
itpp::Rice_Fading_Generator::get_rice_method
virtual RICE_METHOD get_rice_method() const
Get calculation method of Doppler frequencies and amplitudes.
Definition channel.h:488
itpp::Rice_Fading_Generator::c1
vec c1
Definition channel.h:506
itpp::Rice_Fading_Generator::dopp_spectrum
DOPPLER_SPECTRUM dopp_spectrum
Definition channel.h:499
itpp::Rice_Fading_Generator::Ni
int Ni
Number of sine waves in a Gaussian process.
Definition channel.h:501
itpp::Rice_Fading_Generator::f01
double f01
Definition channel.h:510
itpp::Rice_Fading_Generator::rice_method
RICE_METHOD rice_method
Rice process generation method.
Definition channel.h:503
itpp::Rice_Fading_Generator::~Rice_Fading_Generator
virtual ~Rice_Fading_Generator()
Destructor.
Definition channel.h:474
itpp::Rice_Fading_Generator::get_doppler_spectrum
virtual DOPPLER_SPECTRUM get_doppler_spectrum() const
Return Doppler spectrum.
Definition channel.h:484
itpp::Rice_Fading_Generator::get_no_frequencies
virtual int get_no_frequencies() const
Get number of Doppler frequencies.
Definition channel.h:486
itpp::Static_Fading_Generator
Static fading generator class.
Definition channel.h:356
itpp::Static_Fading_Generator::static_sample_re
double static_sample_re
Static Rayleigh distributed sample.
Definition channel.h:373
itpp::Static_Fading_Generator::Static_Fading_Generator
Static_Fading_Generator()
Default constructor.
Definition channel.h:359
itpp::Static_Fading_Generator::~Static_Fading_Generator
virtual ~Static_Fading_Generator()
Destructor.
Definition channel.h:361
itpp::TDL_Channel
Tapped Delay Line (TDL) channel model.
Definition channel.h:858
itpp::TDL_Channel::get_LOS_doppler
double get_LOS_doppler(int tap_number) const
Get relative Doppler (to the maximum Doppler) for tap tap_number.
Definition channel.h:932
itpp::TDL_Channel::a_prof
vec a_prof
Average amplitude of each tap.
Definition channel.h:994
itpp::TDL_Channel::method
CORRELATED_METHOD method
Correlated fading generation method: Rice_MEDS (default), IFFT or FIR.
Definition channel.h:1001
itpp::TDL_Channel::tap_doppler_spectrum
Array< DOPPLER_SPECTRUM > tap_doppler_spectrum
Doppler spectrum for each tap.
Definition channel.h:1002
itpp::TDL_Channel::n_dopp
double n_dopp
Normalized Doppler of the correlated fading.
Definition channel.h:999
itpp::TDL_Channel::N_taps
int N_taps
Number of taps.
Definition channel.h:998
itpp::TDL_Channel::get_LOS_power
vec get_LOS_power() const
Get relative power (Rice factor) for each tap.
Definition channel.h:926
itpp::TDL_Channel::get_LOS_doppler
vec get_LOS_doppler() const
Get relative Doppler (to the maximum Doppler) for each tap.
Definition channel.h:928
itpp::TDL_Channel::los_power
vec los_power
Relative power for each Rice component.
Definition channel.h:996
itpp::TDL_Channel::get_delay_prof
ivec get_delay_prof() const
Return delay profile in samples.
Definition channel.h:915
itpp::TDL_Channel::init_flag
bool init_flag
Channel ready to produce data.
Definition channel.h:993
itpp::TDL_Channel::d_prof
ivec d_prof
Delay in samples for each tap.
Definition channel.h:995
itpp::TDL_Channel::fading_type
FADING_TYPE fading_type
Fading type: Independent (default), Static or Correlated.
Definition channel.h:1000
itpp::TDL_Channel::nrof_freq
int nrof_freq
Number of sine frequencies in the Rice MEDS fading generator.
Definition channel.h:1005
itpp::TDL_Channel::get_correlated_method
CORRELATED_METHOD get_correlated_method() const
Return fading generation method.
Definition channel.h:918
itpp::TDL_Channel::fading_gen
Array< Fading_Generator * > fading_gen
Fading generators for each tap.
Definition channel.h:1003
itpp::TDL_Channel::taps
int taps() const
Return the number of channel taps.
Definition channel.h:908
itpp::TDL_Channel::get_no_frequencies
int get_no_frequencies() const
Get the minimum number of frequencies used in Rice MEDS fading generator.
Definition channel.h:935
itpp::TDL_Channel::los_dopp
vec los_dopp
Relative LOS Doppler for each Rice component.
Definition channel.h:997
itpp::TDL_Channel::discrete_Ts
double discrete_Ts
Sampling time of discretization.
Definition channel.h:1006
itpp::TDL_Channel::get_fading_type
FADING_TYPE get_fading_type() const
Return fading type.
Definition channel.h:920
itpp::TDL_Channel::get_sampling_time
double get_sampling_time() const
Return channel sampling time (used for discretization)
Definition channel.h:990
itpp::TDL_Channel::get_LOS_power
double get_LOS_power(int tap_number) const
Get relative power (Rice factor) for tap tap_number.
Definition channel.h:930
itpp::TDL_Channel::filter_length
int filter_length
Filter length of FIR fading generator.
Definition channel.h:1004
itpp::TDL_Channel::get_norm_doppler
double get_norm_doppler() const
Return normalized doppler rate.
Definition channel.h:923
itpp::Uniform_RNG
Uniform distribution.
Definition random.h:355
elem_math.h
Elementary mathematical functions - header file.
filter.h
Definitions of Filter classes and functions.
itpp::filter
vec filter(const vec &b, const vec &a, const vec &input)
ARMA filter function.
Definition filter.cpp:39
itpp::sqr
vec sqr(const cvec &data)
Absolute square of elements.
Definition elem_math.cpp:36
itpp::sqrt
vec sqrt(const vec &x)
Square root of the elements.
Definition elem_math.h:123
itpp::spectrum
vec spectrum(const vec &v, int nfft, int noverlap)
Power spectrum calculation.
Definition sigfun.cpp:267
mat.h
Matrix Class Definitions.
itpp
itpp namespace
Definition itmex.h:37
itpp::CORRELATED_METHOD
CORRELATED_METHOD
Correlated fading generation methods: Rice_MEDS (default), IFFT or FIR.
Definition channel.h:206
itpp::RICE_METHOD
RICE_METHOD
Rice fading generation methods: MEDS.
Definition channel.h:209
itpp::operator>>
std::istream & operator>>(std::istream &input, bin &outbin)
Input stream of bin.
Definition binary.cpp:42
itpp::CHANNEL_PROFILE
CHANNEL_PROFILE
Predefined channel profiles. Includes LOS and Doppler spectrum settings.
Definition channel.h:193
itpp::FADING_TYPE
FADING_TYPE
Fading generator type: Independent (default), Static or Correlated.
Definition channel.h:203
itpp::DOPPLER_SPECTRUM
DOPPLER_SPECTRUM
Predefined Doppler spectra.
Definition channel.h:212
std
STL namespace.
random.h
Definition of classes for random number generators.

Generated on Mon Apr 22 2024 09:45:27 for IT++ by Doxygen 1.9.8