#include #include #include #include #include #include #include ITAHDFTSpectra::ITAHDFTSpectra( const double dSampleRate, const int iNumChannels, const int iDFTSize, const bool bZeroInit/*=true*/ ) { if( iNumChannels < 1 ) ITA_EXCEPT1( INVALID_PARAMETER, "At least one DFT channel must be used" ); if( iDFTSize < 1 ) ITA_EXCEPT1( INVALID_PARAMETER, "Invalid DFT size" ); for( int i=0; i& vpSpectrumVec ) { if( vpSpectrumVec.size() == 0 ) ITA_EXCEPT1( INVALID_PARAMETER, "At least one DFT channel must be used" ); for( size_t i=0; igetDFTSize() <= 0 ) ITA_EXCEPT1( INVALID_PARAMETER, "Invalid DFT size in spectrum number " + IntToString( int(i) ) ); if( pSpectrum->getSamplerate() <= 0 ) ITA_EXCEPT1( INVALID_PARAMETER, "Invalid sampling rate in spectrum number " + IntToString( int(i) ) ); m_vpSpectra.push_back( new ITAHDFTSpectrum( pSpectrum ) ); // copy } } ITAHDFTSpectra::~ITAHDFTSpectra() { for( size_t i=0; igetEnergy(); if (fEnergyTemp > fEnergyMax) { fEnergyMax = fEnergyTemp; *piIdx = int( n ); } } return fEnergyMax; } void ITAHDFTSpectra::CopyFrom(const ITAHDFTSpectra *otherSpectra) { int iNumChannels=otherSpectra->GetNumChannels(); m_vpSpectra.clear(); for( int i=0; iGetSampleRate()),int(otherSpectra->GetDFTSize())); ITAHDFTSpectrum* tempSpectrum = new ITAHDFTSpectrum((*otherSpectra)[i]); //tempSpectrum->copyFrom((*otherSpectra)[i]); m_vpSpectra.push_back(tempSpectrum); } } void ITAHDFTSpectra::SetUnity() { for( size_t i=0; iSetUnity(); } } void ITAHDFTSpectra::SetZero() { for( size_t i=0; imul( 0.0f ); } } int ITAHDFTSpectra::GetNumChannels() const { return int( m_vpSpectra.size() ); } int ITAHDFTSpectra::GetDFTSize() const { return m_vpSpectra[0]->getDFTSize(); } double ITAHDFTSpectra::GetSampleRate() const { return m_vpSpectra[0]->getSamplerate(); } void ITAHDFTSpectra::add( const ITAHDFTSpectra* pSource ) { if( GetNumChannels() != pSource->GetNumChannels() ) ITA_EXCEPT1( INVALID_PARAMETER, "Channel number mismatch" ); for( int i=0; iadd( pSourceSpectrum ); } return; } void ITAHDFTSpectra::sub( const ITAHDFTSpectra* pSource ) { if( GetNumChannels() != pSource->GetNumChannels() ) ITA_EXCEPT1( INVALID_PARAMETER, "Channel number mismatch" ); for( int i=0; isub( pSourceSpectrum ); } return; } void ITAHDFTSpectra::mul( const ITAHDFTSpectra* pSource ) { if( GetNumChannels() != pSource->GetNumChannels() ) ITA_EXCEPT1( INVALID_PARAMETER, "Channel number mismatch" ); for( int i=0; imul( pSourceSpectrum ); } return; } void ITAHDFTSpectra::mul_conj( const ITAHDFTSpectra* pSource ) { if( GetNumChannels() != pSource->GetNumChannels() ) ITA_EXCEPT1( INVALID_PARAMETER, "Channel number mismatch" ); for( int i=0; imul( pSourceSpectrum ); } return; } void ITAHDFTSpectra::mul_scalar( double ) { ITA_EXCEPT0( NOT_IMPLEMENTED ); } void ITAHDFTSpectra::div( const ITAHDFTSpectra* pSource ) { if( GetNumChannels() != pSource->GetNumChannels() ) ITA_EXCEPT1( INVALID_PARAMETER, "Channel number mismatch" ); for( int i=0; idiv( pSourceSpectrum ); } return; } const ITAHDFTSpectrum* ITAHDFTSpectra::operator[]( const int iIdx ) const { return m_vpSpectra[iIdx]; } ITAHDFTSpectrum* ITAHDFTSpectra::operator[]( const int iIdx ) { return m_vpSpectra[iIdx]; }