24 #include "cheetah/data/TimeFrequencyStats.h" 32 template<
typename TimeFrequencyType>
33 TimeFrequencyStats<TimeFrequencyType>::Statistics::Statistics()
39 template<
typename TimeFrequencyType>
45 template<
typename TimeFrequencyType>
50 template<
typename TimeFrequencyType>
53 const std::size_t nspectra=this->
get().number_of_spectra();
54 const std::size_t nchans=this->
get().number_of_channels();
56 _spectrum_stats.assign(nspectra,
Statistics());
58 auto it=this->
get().begin();
59 auto end=this->
get().end();
60 typename TimeFrequencyType::ConstIterator chan_end;
61 auto spectrum_stats_it = _spectrum_stats.begin();
64 auto& spectrum_stat = *spectrum_stats_it;
65 auto channel_stat_it = _channel_stats.begin();
68 double val =
static_cast<double>(*it);
71 spectrum_stat.mean += val/(double)nchans;
73 auto& channel_stat = *channel_stat_it;
74 channel_stat.mean += val/(double)nspectra;
77 const double v_squared = (double)(val * val);
78 spectrum_stat.variance += v_squared/(double)nchans;
79 channel_stat.variance += v_squared/(double)nspectra;
88 spectrum_stat.variance -= (spectrum_stat.mean * spectrum_stat.mean);
93 auto channel_stats_it = _channel_stats.begin();
94 while(channel_stats_it != _channel_stats.end())
96 (*channel_stats_it).variance -= ((*channel_stats_it).mean * (*channel_stats_it).mean);
102 template<
typename TimeFrequencyType>
105 if(_channel_stats.size() != this->
template dimension<data::Frequency>()) {
108 return _channel_stats;
111 template<
typename TimeFrequencyType>
114 if(_spectrum_stats.size() != this->
template dimension<data::Time>()) {
117 return _spectrum_stats;
std::vector< Statistics > const & channel_stats() const
: return the Statistics for each channel in the block
Some limits and constants for FLDO.
A class to compute timefrequency stats (mean and variance.
TimeFrequencyStats(std::shared_ptr< TimeFrequencyType > const &)
: construct an object with median and variance statistics for each channel and each spectrum...
void calculate_stats() const
: recompute the statistics
std::vector< Statistics > const & spectrum_stats() const
: return the Statistics (mean and variance) for each spectrum