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);
}
}
1.7.1