⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fading.cpp

📁 RFID reader 语 tag 模拟器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include "fading.hpp"#include "wireless_comm_signal.hpp"#include "physical_layer.hpp"#include "simulator.hpp"#include "rand_num_generator.hpp"const double Ricean::m_DEFAULT_MAX_VELOCITY = 6.5;const double Ricean::m_DEFAULT_K = 6.0;const t_uint Ricean::m_NUMBER_OF_POINTS = 16384;const double Ricean::m_MAX_DOPPLER_FREQUENCY = 30.0;const double Ricean::m_MAX_SAMPLE_RATE = 1000.0;Fading::Fading(){}Fading::Fading(const Fading& rhs){}Fading::~Fading(){}Ricean::Ricean()   : m_maxVelocity(m_DEFAULT_MAX_VELOCITY), m_kParameter(m_DEFAULT_K){}Ricean::Ricean(double maxVelocity, double k)   : m_maxVelocity(maxVelocity), m_kParameter(k){}Ricean::Ricean(const Ricean& rhs)   : m_maxVelocity(rhs.m_maxVelocity), m_kParameter(rhs.m_kParameter){}Rayleigh::Rayleigh()   : Ricean(m_DEFAULT_MAX_VELOCITY, 0){}Rayleigh::Rayleigh(double maxVelocity)   : Ricean(maxVelocity, 0){}Rayleigh::Rayleigh(const Rayleigh& rhs)   : Ricean(rhs){}double Ricean::fadingFactor(const WirelessCommSignal& signal,   const NodeId& nodeId){   // This code is from the ns-2 module by Punnoose et al.   // See their code and paper for details of the model.   // MJM: I modified the model to compute a different fading   // factor for each receiver to avoid having the same   // fading factor globally for a given time instance.   double maxFrequency = m_maxVelocity / signal.getWavelength();   SimTime currentTime = Simulator::instance()->currentTime();   double timeIndex = (currentTime.getTimeInSeconds() *      m_MAX_SAMPLE_RATE * (maxFrequency / m_MAX_DOPPLER_FREQUENCY));   timeIndex = timeIndex - (m_NUMBER_OF_POINTS *      floor(timeIndex / m_NUMBER_OF_POINTS));   // Envelope interpolation using Legendre polynomials   int idx1 = static_cast<int>(floor(timeIndex));   assert(idx1 >= 0 && idx1 < static_cast<int>(m_NUMBER_OF_POINTS));   map<NodeId,int>::const_iterator p = m_nodeOffset.find(nodeId);   if(p == m_nodeOffset.end()) {      RandNumGeneratorPtr rand =         Simulator::instance()->getRandNumGenerator();      m_nodeOffset[nodeId] =         rand->uniformInt(0, (m_NUMBER_OF_POINTS - 1));;   }   idx1 = (idx1 + m_nodeOffset[nodeId]) % m_NUMBER_OF_POINTS;   int idx0 = (idx1 - 1 + m_NUMBER_OF_POINTS) % m_NUMBER_OF_POINTS;   int idx2 = (idx1 + 1) % m_NUMBER_OF_POINTS;   int idx3 = (idx1 + 2) % m_NUMBER_OF_POINTS;   //double X1 = timeIndex - idx1;   double X1 = timeIndex - floor(timeIndex);   double X0 = X1 + 1.0;   double X2 = X1 - 1.0;   double X3 = X1 - 2.0;   double interpolation1 =      (m_GAUSSIAN_DATA1[idx0] * X1 * X2 * X3 / -6.0) +      (m_GAUSSIAN_DATA1[idx1] * X0 * X2 * X3 * 0.5) +      (m_GAUSSIAN_DATA1[idx2] * X0 * X1 * X3 * -0.5) +      (m_GAUSSIAN_DATA1[idx3] * X0 * X1 * X2 / 6.0);   double interpolation2 =      (m_GAUSSIAN_DATA2[idx0] * X1 * X2 * X3 / -6.0) +      (m_GAUSSIAN_DATA2[idx1] * X0 * X2 * X3 * 0.5) +      (m_GAUSSIAN_DATA2[idx2] * X0 * X1 * X3 * -0.5) +      (m_GAUSSIAN_DATA2[idx3] * X0 * X1 * X2 / 6.0);   // The envelope multiplicative factor   double numeratorTerm1 = interpolation1 + sqrt(2.0 * m_kParameter);   double envelopeFactor =      (pow(numeratorTerm1, 2) + pow(interpolation2, 2)) /      (2.0 * (m_kParameter + 1));   return envelopeFactor;}// These are generated values from the Punnoose et al.// implementation.  I've hard-coded them rather than load// from a file.const double Ricean::m_GAUSSIAN_DATA1[m_NUMBER_OF_POINTS] ={-1.059166,-1.230047,-1.372025,-1.485196,-1.570531,-1.629788,-1.665405,-1.680371,-1.678082,-1.662188,-1.636435,-1.604505,-1.569873,-1.535666,-1.504541,-1.478590,-1.459267,-1.447334,-1.442852,-1.445183,-1.453035,-1.464527,-1.477274,-1.488506,-1.495187,-1.494163,-1.482299,-1.456634,-1.414520,-1.353755,-1.272704,-1.170396,-1.046604,-0.901891,-0.737635,-0.556020,-0.359999,-0.153229,0.060025,0.275005,0.486598,0.689491,0.878337,1.047926,1.193353,1.310188,1.394627,1.443630,1.455042,1.427677,1.361389,1.257095,1.116782,0.943470,0.741147,0.514675,0.269661,0.012320,-0.250705,-0.512512,-0.766141,-1.004764,-1.221875,-1.411477,-1.568253,-1.687713,-1.766322,-1.801603,-1.792207,-1.737947,-1.639808,-1.499914,-1.321473,-1.108681,-0.866610,-0.601065,-0.318423,-0.025461,0.270826,0.563413,0.845426,1.110321,1.352048,1.565195,1.745117,1.888036,1.991117,2.052518,2.071404,2.047944,1.983267,1.879407,1.739217,1.566263,1.364708,1.139182,0.894645,0.636247,0.369192,0.098608,-0.170577,-0.433741,-0.686662,-0.925591,-1.147308,-1.349160,-1.529074,-1.685556,-1.817671,-1.925007,-2.007627,-2.066009,-2.100982,-2.113653,-2.105338,-2.077492,-2.031647,-1.969349,-1.892118,-1.801403,-1.698561,-1.584841,-1.461382,-1.329218,-1.189303,-1.042530,-0.889764,-0.731879,-0.569794,-0.404505,-0.237118,-0.068871,0.098844,0.264483,0.426344,0.582591,0.731276,0.870378,0.997854,1.111691,1.209974,1.290951,1.353103,1.395211,1.416422,1.416302,1.394887,1.352713,1.290836,1.210840,1.114817,1.005339,0.885408,0.758389,0.627931,0.497871,0.372128,0.254591,0.149006,0.058854,-0.012756,-0.063196,-0.090411,-0.092995,-0.070257,-0.022252,0.050193,0.145491,0.261324,0.394699,0.542022,0.699199,0.861751,1.024943,1.183926,1.333883,1.470180,1.588510,1.685032,1.756493,1.800342,1.814813,1.798990,1.752847,1.677257,1.573973,1.445582,1.295433,1.127536,0.946439,0.757097,0.564711,0.374565,0.191866,0.021573,-0.131762,-0.264139,-0.372239,-0.453537,-0.506382,-0.530056,-0.524799,-0.491806,-0.433187,-0.351909,-0.251693,-0.136903,-0.012400,0.116612,0.244760,0.366672,0.477159,0.571383,0.645020,0.694405,0.716655,0.709765,0.672686,0.605356,0.508711,0.384662,0.236032,0.066473,-0.119653,-0.317409,-0.521444,-0.726162,-0.925906,-1.115138,-1.288620,-1.441581,-1.569876,-1.670115,-1.739775,-1.777283,-1.782060,-1.754542,-1.696160,-1.609292,-1.497180,-1.363819,-1.213823,-1.052267,-0.884516,-0.716044,-0.552247,-0.398263,-0.258796,-0.137958,-0.039130,0.035152,0.083286,0.104651,0.099633,0.069609,0.016897,-0.055324,-0.143124,-0.241961,-0.346842,-0.452495,-0.553560,-0.644775,-0.721171,-0.778249,-0.812147,-0.819786,-0.798991,-0.748581,-0.668427,-0.559476,-0.423737,-0.264234,-0.084918,0.109447,0.313427,0.521087,0.726180,0.922347,1.103319,1.263128,1.396300,1.498042,1.564407,1.592430,1.580239,1.527129,1.433602,1.301363,1.133286,0.933338,0.706467,0.458460,0.195777,-0.074645,-0.345599,-0.609821,-0.860216,-1.090068,-1.293247,-1.464395,-1.599091,-1.693982,-1.746885,-1.756855,-1.724206,-1.650504,-1.538512,-1.392103,-1.216136,-1.016307,-0.798965,-0.570919,-0.339224,-0.110964,0.106963,0.308059,0.486421,0.636915,0.755329,0.838490,0.884356,0.892061,0.861927,0.795442,0.695194,0.564775,0.408655,0.232021,0.040607,-0.159502,-0.362070,-0.560912,-0.750100,-0.924141,-1.078161,-1.208046,-1.310568,-1.383477,-1.425559,-1.436656,-1.417656,-1.370442,-1.297811,-1.203364,-1.091363,-0.966576,-0.834100,-0.699174,-0.566993,-0.442519,-0.330308,-0.234347,-0.157914,-0.103464,-0.072542,-0.065733,-0.082638,-0.121897,-0.181231,-0.257531,-0.346965,-0.445117,-0.547148,-0.647967,-0.742418,-0.825465,-0.892380,-0.938916,-0.961470,-0.957220,-0.924242,-0.861589,-0.769352,-0.648667,-0.501705,-0.331614,-0.142432,0.061025,0.273316,0.488537,0.700506,0.902961,1.089761,1.255084,1.393620,1.500745,1.572683,1.606632,1.600869,1.554819,1.469085,1.345445,1.186810,0.997150,0.781379,0.545215,0.295013,0.037579,-0.220038,-0.470754,-0.707664,-0.924256,-1.114601,-1.273543,-1.396850,-1.481347,-1.525012,-1.527040,-1.487865,-1.409152,-1.293740,-1.145562,-0.969521,-0.771340,-0.557390,-0.334493,-0.109716,0.109847,0.317288,0.506093,0.670345,0.804895,0.905523,0.969056,0.993468,0.977933,0.922848,0.829812,0.701580,0.541967,0.355730,0.148420,-0.073792,-0.304305,-0.536291,-0.762905,-0.977489,-1.173781,-1.346094,-1.489493,-1.599937,-1.674394,-1.710935,-1.708774,-1.668297,-1.591030,-1.479598,-1.337626,-1.169630,-0.980874,-0.777198,-0.564849,-0.350277,-0.139948,0.059853,0.243211,0.404756,0.539815,0.644551,0.716063,0.752468,0.752945,0.717744,0.648170,0.546527,0.416036,0.260725,0.085298,-0.105020,-0.304648,-0.507823,-0.708781,-0.901932,-1.082029,-1.244325,-1.384708,-1.499824,-1.587165,-1.645134,-1.673082,-1.671315,-1.641067,-1.584449,-1.504371,-1.404438,-1.288825,-1.162139,-1.029269,-0.895224,-0.764972,-0.643290,-0.534603,-0.442858,-0.371397,-0.322858,-0.299098,-0.301143,-0.329159,-0.382455,-0.459513,-0.558037,-0.675034,-0.806912,-0.949591,-1.098638,-1.249402,-1.397164,-1.537273,-1.665297,-1.777152,-1.869221,-1.938466,-1.982511,-1.999710,-1.989186,-1.950857,-1.885427,-1.794356,-1.679810,-1.544592,-1.392047,-1.225956,-1.050424,-0.869749,-0.688295,-0.510359,-0.340052,-0.181171,-0.037100,0.089288,0.195705,0.280506,0.342724,0.382089,0.399018,0.394593,0.370509,0.329016,0.272832,0.205056,0.129058,0.048378,-0.033396,-0.112736,-0.186284,-0.250954,-0.304025,-0.343217,-0.366761,-0.373441,-0.362627,-0.334285,-0.288970,-0.227802,-0.152422,-0.064938,0.032153,0.136037,0.243681,0.351926,0.457583,0.557531,0.648814,0.728723,0.794878,0.845293,0.878430,0.893243,0.889194,0.866271,0.824974,0.766294,0.691680,0.602981,0.502397,0.392397,0.275651,0.154948,0.033107,-0.087095,-0.203008,-0.312181,-0.412425,-0.501868,-0.579005,-0.642724,-0.692329,-0.727548,-0.748523,-0.755794,-0.750271,-0.733187,-0.706056,-0.670614,-0.628756,-0.582474,-0.533794,-0.484705,-0.437108,-0.392753,-0.353191,-0.319735,-0.293427,-0.275015,-0.264939,-0.263333,-0.270030,-0.284580,-0.306276,-0.334188,-0.367204,-0.404069,-0.443439,-0.483924,-0.524139,-0.562750,-0.598516,-0.630329,-0.657241,-0.678498,-0.693549,-0.702062,-0.703925,-0.699238,-0.688304,-0.671608,-0.649792,-0.623626,-0.593975,-0.561764,-0.527944,-0.493457,-0.459202,-0.426004,-0.394594,-0.365583,-0.339451,-0.316536,-0.297033,-0.280997,-0.268353,-0.258912,-0.252390,-0.248429,-0.246628,-0.246568,-0.247838,-0.250066,-0.252940,-0.256234,-0.259821,-0.263688,-0.267945,-0.272822,-0.278666,-0.285930,-0.295157,-0.306954,-0.321970,-0.340862,-0.364264,-0.392753,-0.426814,-0.466808,-0.512945,-0.565252,-0.623558,-0.687474,-0.756390,-0.829472,-0.905668,-0.983725,-1.062208,-1.139534,-1.214006,-1.283853,-1.347276,-1.402496,-1.447807,-1.481620,-1.502517,-1.509290,-1.500985,-1.476936,-1.436790,-1.380524,-1.308459,-1.221259,-1.119920,-1.005754,-0.880358,-0.745583,-0.603491,-0.456302,-0.306344,-0.156000,-0.007645,0.136409,0.273964,0.402993,0.521678,0.628457,0.722051,0.801484,0.866102,0.915573,0.949883,0.969319,0.974448,0.966087,0.945263,0.913171,0.871133,0.820544,0.762830,0.699399,0.631600,0.560686,0.487776,0.413840,0.339672,0.265890,0.192929,0.121055,0.050375,-0.019131,-0.087587,-0.155185,-0.222145,-0.288676,-0.354939,-0.421006,-0.486828,-0.552205,-0.616764,-0.679946,-0.740999,-0.798983,-0.852785,-0.901140,-0.942665,-0.975904,-0.999372,-1.011609,-1.011246,-0.997054,-0.968016,-0.923374,-0.862691,-0.785891,-0.693300,-0.585670,-0.464195,-0.330512,-0.186687,-0.035187,0.121160,0.279223,0.435637,0.586878,0.729355,0.859504,0.973888,1.069294,1.142834,1.192040,1.214945,1.210160,1.176938,1.115215,1.025641,0.909590,0.769147,0.607078,0.426782,0.232219,0.027822,-0.181601,-0.390986,-0.595134,-0.788849,-0.967065,-1.124985,-1.258208,-1.362852,-1.435660,-1.474096,-1.476424,-1.441759,-1.370103,-1.262359,-1.120311,-0.946595,-0.744631,-0.518548,-0.273082,-0.013455,0.254750,0.525733,0.793623,1.052628,1.297176,1.522063,1.722577,1.894617,2.034791,2.140500,2.209990,2.242392,2.237731,2.196913,2.121691,2.014603,1.878894,1.718423,1.537544,1.340993,1.133747,0.920899,0.707518,0.498520,0.298545,0.111849,-0.057798,-0.207193,-0.333757,-0.435582,-0.511452,-0.560843,-0.583904,-0.581418,-0.554750,-0.505771,-0.436782,-0.350418,-0.249552,-0.137196,-0.016401,0.109838,0.238670,0.367465,0.493877,0.615903,0.731911,0.840665,0.941328,1.033449,1.116937,1.192022,1.259203,1.319186,1.372823,1.421038,1.464755,1.504836,1.542015,1.576842,1.609640,1.640474,1.669126,1.695096,1.717605,1.735623,1.747901,1.753024,1.749468,1.735666,1.710084,1.671292,1.618042,1.549341,1.464512,1.363260,1.245706,1.112432,0.964490,0.803405,0.631164,0.450179,0.263241,0.073458,-0.115823,-0.301104,-0.478827,-0.645480,-0.797698,-0.932366,-1.046713,-1.138407,-1.205628,-1.247137,-1.262324,-1.251235,-1.214590,-1.153772,-1.070794,-0.968261,-0.849293,-0.717453,-0.576643,-0.430998,-0.284775,-0.142227,-0.007484,0.115564,0.223377,0.312872,0.381506,0.427347,0.449135,0.446308,0.419021,0.368133,0.295181,0.202326,0.092287,-0.031742,-0.166198,-0.307252,-0.450928,-0.593226,-0.730240,-0.858273,-0.973951,-1.074316,-1.156913,-1.219855,-1.261875,-1.282354,-1.281329,-1.259482,-1.218107,-1.159059,-1.084689,-0.997755,-0.901332,-0.798709,-0.693276,-0.588417,-0.487400,-0.393276,-0.308780,-0.236252,-0.177565,-0.134075,-0.106586,-0.095331,-0.099977,-0.119648,-0.152960,-0.198078,-0.252788,-0.314573,-0.380708,-0.448352,-0.514645,-0.576809,-0.632239,-0.678587,-0.713841,-0.736386,-0.745055,-0.739163,-0.718521,-0.683442,-0.634716,-0.573584,-0.501687,-0.421007,-0.333796,-0.242497,-0.149658,-0.057847,0.030434,0.112836,0.187233,0.251799,0.305056,0.345925,0.373757,0.388345,0.389930,0.379183,0.357181,0.325364,0.285483,0.239539,0.189713,0.138295,0.087602,0.039909,-0.002630,-0.038046,-0.064619,-0.080929,-0.085896,-0.078814,-0.059365,-0.027623,0.015947,0.070513,0.134904,0.207648,0.287021,0.371094,0.457798,0.544975,0.630441,0.712042,0.787706,0.855495,0.913643,0.960591,0.995014,1.015843,1.022267,1.013743,0.989983,0.950949,0.896832,0.828032,0.745135,0.648885,0.540161,0.419954,0.289341,0.149470,0.001544,-0.153191,-0.313454,-0.477929,-0.645268,-0.814087,-0.982961,-1.150418,-1.314937,-1.474942,-1.628806,-1.774851,-1.911359,-2.036587,-2.148789,-2.246240,-2.327274,-2.390320,-2.433949,-2.456919,-2.458225,-2.437152,-2.393320,-2.326730,-2.237803,-2.127410,-1.996896,-1.848084,-1.683276,-1.505231,-1.317135,-1.122549,-0.925348,-0.729647,-0.539704,-0.359827,-0.194262,-0.047081,0.077933,0.177401,0.248457,0.288846,0.297016,0.272187,0.214406,0.124583,0.004498,-0.143211,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -