MonteCarloRun::MonteCarloRun( const MinMax<double> & modIndex, const MinMax<double> & fmModIndex, const MinMax<double> & freq, const MinMax<double> & digiFreq, const MinMax<double> & fc, const double & rate, const double & gain, const double & timePerSchemeSec, const size_t & frameSize, const size_t & N) : _modType(AMC::ModType::AM_DSB_FC), _dataStream(new UhdMock(new StreamFunction(), rate, gain, frameSize)), _buffer(_dataStream->getBuffer()), _featureExtractor(new AMC::FeatureExtractor(_buffer, N, rate)), _rate(rate), _timePerScheme(timePerSchemeSec * 1e9), _frameSize(frameSize), _N(N), _modIndex(rng_gen_type(std::time(0) + 100), boost::uniform_real<>(modIndex.getMin(), modIndex.getMax())), _fmModIndex(rng_gen_type(std::time(0) + 125), boost::uniform_real<>(fmModIndex.getMin(), fmModIndex.getMax())), _freq(rng_gen_type(std::time(0) + 259), boost::uniform_real<>(freq.getMin(), freq.getMax())), _digiFreq(rng_gen_type(std::time(0) - 9), boost::uniform_real<>(digiFreq.getMin(), digiFreq.getMax())), _fc(rng_gen_type(std::time(0) - 214), boost::uniform_real<>(fc.getMin(), fc.getMax())), _constSize(rng_gen_type(std::time(0) + 169), boost::uniform_int<>(2, 8)), _timer(), _thread(), _isRunning(false) { }
MonteCarloRun::MonteCarloRun( const MinMax<double> & modIndex, const MinMax<double> & fmModIndex, const MinMax<double> & freq, const MinMax<double> & digiFreq, const MinMax<double> & snr, const double & fc, const double & rate, const double & gain, const double & timePerSchemeSec, const size_t & frameSize, const size_t & N) : _modType(new SharedType<AMC::ModType>(AMC::ModType::AM_DSB_FC)), _dataStream(new UhdMock(new StreamFunction(), rate, gain, frameSize)), _buffer(_dataStream->getBuffer()), _featureExtractor(new AMC::FeatureExtractor(_buffer, new AmcCvDecisionTree(), rate, _dataStream->getFc(), _dataStream->getWindow(), N)), _rate(rate), _timePerScheme(timePerSchemeSec * 1e9), _frameSize(frameSize), _N(N), _fc(_dataStream->getFc()), _firWindow(_dataStream->getWindow()), _modIndex(rng_gen_type(std::time(0) + 100), boost::uniform_real<>(modIndex.getMin(), modIndex.getMax())), _fmModIndex(rng_gen_type(std::time(0) + 125), boost::uniform_real<>(fmModIndex.getMin(), fmModIndex.getMax())), _freq(rng_gen_type(std::time(0) + 259), boost::uniform_real<>(freq.getMin(), freq.getMax())), _digiFreq(rng_gen_type(std::time(0) - 9), boost::uniform_real<>(digiFreq.getMin(), digiFreq.getMax())), _snr(rng_gen_type(std::time(0) - 206), boost::uniform_real<>(snr.getMin(), snr.getMax())), _constSize(rng_gen_type(std::time(0) + 169), boost::uniform_int<>(2, 8)), _timer(), _thread(), _isRunning(false) { boost::unique_lock<boost::shared_mutex> fcLock(*_fc->getMutex()); _fc->getData() = fc; fcLock.unlock(); double maxWin = std::max(freq.getMax() / rate, digiFreq.getMax()); maxWin = std::max(maxWin, fmModIndex.getMax()); boost::unique_lock<boost::shared_mutex> firLock(*_firWindow->getMutex()); _firWindow->getData() = maxWin * 2.1; firLock.unlock(); }
int main() { MinMax m1(10, 15); MinMax m2(8, 11); MinMax m3(3, 12); MinMax mFinal = m1 + m2 + 5 + 8 + m3 + 16; std::cout << "Result: (" << mFinal.getMin() << ", " << mFinal.getMax() << ")\n"; return 0; }