A Frequency/Time data chunk.Contiguous block of frequency channels and time samples.
The frequencies represented in each time sample should be set/referenced from with the channel_frequencies methods.
Each time sample is represents an indentical frequency range.
#include "cheetah/data/FrequecyTime.h"
#include <algorithm>
FrequecyTime<Cpu, uint8_t> ft_block(DimensionSize<Time>(1000), DimensionSize<Frequency>(4096));
...
for(unsigned i=0; i < ft_block.number_of_spectra(); ++i) {
Spectra spectrum = ft_block.spectrum(i);
auto channel_it = spectrum.begin();
while(channel_it != spectrum.end())
{
++channel_it;
}
std::fill(spectrum.begin(), spectrum.end(), 0U);
}
ft_block[DimesnionIndex<Time>(2)][DimensionIndex<Frequency>(3)] = 10;
#ifndef SKA_CHEETAH_FREQUENCYTIME_H
#define SKA_CHEETAH_FREQUENCYTIME_H
#include "cheetah/data/Units.h"
#include "cheetah/data/TimeFrequencyCommon.h"
#include "cheetah/utils/Architectures.h"
#include "panda/DataChunk.h"
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#pragma GCC diagnostic ignored "-Wpragmas"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wunused-variable"
#include "pss/astrotypes/types/TimeFrequency.h"
#pragma GCC diagnostic pop
namespace cheetah {
namespace data {
template <class Arch, typename NumericalT> class TimeFrequency;
template <class Arch, typename NumericalT>
class FrequencyTime : public pss::astrotypes::FrequencyTime<NumericalT>
, public TimeFrequencyCommon<FrequencyTime<Arch, NumericalT>>
{
typedef pss::astrotypes::FrequencyTime<NumericalT> BaseT;
typedef TimeFrequencyCommon<FrequencyTime<Arch, NumericalT>> CommonBaseT;
public:
typedef NumericalT NumericalRep;
typedef Arch Architecture;
typedef typename CommonBaseT::FrequencyType FrequencyType;
typedef typename CommonBaseT::TimeType TimeType;
typedef typename CommonBaseT::TimePointType TimePointType;
typedef typename BaseT::iterator Iterator;
typedef typename BaseT::const_iterator ConstIterator;
typedef TimeFrequency<Arch, NumericalT> TimeFrequencyType;
typedef typename BaseT::Spectra
Spectra;
typedef typename BaseT::ConstSpectra ConstSpectra;
typedef typename BaseT::Channel Channel;
typedef typename BaseT::ConstChannel ConstChannel;
public:
FrequencyTime(DimensionSize<Time> number_of_spectra, DimensionSize<Frequency> number_of_channels);
FrequencyTime(DimensionSize<Frequency> number_of_channels, DimensionSize<Time> number_of_spectra);
template<class OtherArch, typename OtherNumericalT>
template<typename OtherNumericalT>
template<typename OtherArch, typename OtherNumericalT>
FrequencyTime(TimeFrequency<OtherArch, OtherNumericalT>
const& tf);
void set_channel(
unsigned channel_number, DataType
const& value);
};
template<typename T>
struct ExtractFrequencyTimeDataType;
template<typename T, typename Enable = void>
struct ExtractFrequencyTimeDataTypeHelper;
}
}
}
namespace astrotypes {
template<typename Alloc, typename T>
struct has_exact_dimensions<ska::cheetah::data::FrequencyTime<T, Alloc>, units::Frequency, units::Time> : public std::true_type
{
};
}
}
#include "detail/FrequencyTime.cpp"
#include "cuda/FrequencyTime.h"
#endif // SKA_CHEETAH_FREQUENCYTIME_H