21 #include <ns3/spectrum-converter.h>
22 #include <ns3/assert.h>
32 SpectrumConverter::SpectrumConverter ()
39 m_fromSpectrumModel = fromSpectrumModel;
40 m_toSpectrumModel = toSpectrumModel;
42 for (Bands::const_iterator toit = toSpectrumModel->Begin (); toit != toSpectrumModel->End (); ++toit)
44 std::vector<double> coeffs;
46 for (Bands::const_iterator fromit = fromSpectrumModel->Begin (); fromit != fromSpectrumModel->End (); ++fromit)
49 NS_LOG_LOGIC (
"(" << fromit->fl <<
"," << fromit->fh <<
")"
51 "(" << toit->fl <<
"," << toit->fh <<
")"
56 m_conversionMatrix.push_back (coeffs);
65 double coeff = std::min (from.
fh, to.
fh) - std::max (from.
fl, to.
fl);
66 coeff = std::max (0.0, coeff);
67 coeff = std::min (1.0, coeff / (to.
fh - to.
fl));
76 NS_ASSERT ( *(fvvf->GetSpectrumModel ()) == *m_fromSpectrumModel);
80 Values::iterator tvit = tvvf->ValuesBegin ();
83 for (std::vector<std::vector<double> >::const_iterator toit = m_conversionMatrix.begin ();
84 toit != m_conversionMatrix.end ();
88 Values::const_iterator fvit = fvvf->ConstValuesBegin ();
91 for (std::vector<double>::const_iterator fromit = toit->begin ();
92 fromit != toit->end ();
95 NS_ASSERT (fvit != fvvf->ConstValuesEnd ());
96 sum += (*fvit) * (*fromit);
double GetCoefficient(const BandInfo &from, const BandInfo &to) const
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
#define NS_ASSERT(condition)
#define NS_LOG_COMPONENT_DEFINE(name)
#define NS_LOG_LOGIC(msg)
double fl
lower limit of subband
Ptr< SpectrumValue > Convert(Ptr< const SpectrumValue > vvf) const
double fh
upper limit of subband