This AnalogueModel models implements the Ghassmezadeh stochastic UWB channel models. More...
#include <UWBIRStochasticPathlossModel.h>
Inherits AnalogueModel.
Public Member Functions | |
UWBIRStochasticPathlossModel (double _PL0, double _mu_gamma, double _sigma_gamma, double _mu_sigma, double _sigma_sigma, const Move *_move, bool _enabled, bool _shadowing=true) | |
void | filterSignal (Signal &s) |
Has to be overriden by every implementation. | |
Public Attributes | |
double | PL0 |
double | mu_gamma |
double | sigma_gamma |
double | mu_sigma |
double | sigma_sigma |
double | gamma |
double | S |
double | sigma |
double | n1 |
double | n2 |
double | n3 |
bool | isEnabled |
bool | shadowing |
cOutVector | distances |
cOutVector | srcPosX |
cOutVector | srcPosY |
cOutVector | dstPosX |
cOutVector | dstPosY |
int | myIndex |
std::string | myName |
Static Public Attributes | |
static const double | Gtx = 1 |
static const double | Grx = 1 |
static const double | ntx = 1 |
static const double | nrx = 1 |
static const double | fc = 4492.8 |
static const double | d0 = 1 |
static double | n1_limit = 1.25 |
static double | n2_limit = 2 |
static const double | s_mu = 1.6 |
static const double | s_sigma = 0.5 |
static const double | kappa = 1 |
Protected Member Functions | |
double | getNarrowBandFreeSpacePathloss (double fc, double distance) |
double | getGhassemzadehPathloss (double distance) |
double | getFDPathloss (double freq, double distance) |
double | simtruncnormal (double mean, double stddev, double a, int rng) |
Protected Attributes | |
double | pathloss_exponent |
double | fading |
Dimension | frequency |
const Move * | move |
cOutVector | pathlosses |
This AnalogueModel models implements the Ghassmezadeh stochastic UWB channel models.
Citation of the following publication is appreciated if you use the MiXiM UWB PHY model for a publication of your own. J. Rousselot, J.-D. Decotignie, An ultra-wideband impulse radio PHY layer model for network simulation. SIMULATION January 2011 vol. 87 no. 1-2 82-112.
For more information, see also:
[1] J. Rousselot, J.-D. Decotignie, An ultra-wideband impulse radio PHY layer model for network simulation. SIMULATION January 2011 vol. 87 no. 1-2 82-112. http://dx.doi.org/10.1177/0037549710377767 [2] J. Rousselot, Ultra Low Power Communication Protocols for UWB Impulse Radio Wireless Sensor Networks. EPFL Thesis 4720, 2010. http://infoscience.epfl.ch/record/147987 [3] A High-Precision Ultra Wideband Impulse Radio Physical Layer Model for Network Simulation, Jérôme Rousselot, Jean-Dominique Decotignie, Second International Omnet++ Workshop,Simu'TOOLS, Rome, 6 Mar 09. http://portal.acm.org/citation.cfm?id=1537714
Definition at line 53 of file UWBIRStochasticPathlossModel.h.
void UWBIRStochasticPathlossModel::filterSignal | ( | Signal & | s | ) | [virtual] |
Has to be overriden by every implementation.
Filters a specified Signal by adding an attenuation over time to the Signal.
Implements AnalogueModel.
Definition at line 33 of file UWBIRStochasticPathlossModel.cc.
References Signal::addAttenuation(), Coord::distance(), Signal::getMove(), Move::getPositionAt(), Signal::getSignalStart(), and TimeMapping< Interpolator >::setValue().
{ if (isEnabled) { // Initialize objects and variables TimeMapping<Linear>* attMapping = new TimeMapping<Linear> (); Argument arg; Move srcMove = s.getMove(); Coord srcCoord, rcvCoord; double distance = 0; // Generate channel. // assume channel coherence during whole frame n1 = simtruncnormal(0, 1, n1_limit, 1); n2 = simtruncnormal(0, 1, n2_limit, 2); n3 = simtruncnormal(0, 1, n2_limit, 3); gamma = mu_gamma + n1 * sigma_gamma; sigma = mu_sigma + n3 * sigma_sigma; S = n2 * sigma; // Determine distance between sender and receiver srcCoord = srcMove.getPositionAt(s.getSignalStart()); rcvCoord = move->getPositionAt(s.getSignalStart()); distance = rcvCoord.distance(srcCoord); /* srcPosX.record(srcCoord.getX()); srcPosY.record(srcCoord.getY()); dstPosX.record(rcvCoord.getX()); dstPosY.record(rcvCoord.getY()); distances.record(distance); */ // Compute pathloss double attenuation = getGhassemzadehPathloss(distance); pathlosses.record(attenuation); //attenuation = attenuation / (4*PI*pow(distance, gamma)); // Store scalar mapping attMapping->setValue(arg, attenuation); s.addAttenuation(attMapping); } }