Implement dc-remove option.
This commit is contained in:
@@ -284,6 +284,7 @@ void ecmcFFT::dataUpdatedCallback(uint8_t* data,
|
||||
updateStatus(CALC);
|
||||
|
||||
// **** Breakout to sperate low prio work thread below
|
||||
removeDCOffset();
|
||||
calcFFT(); // FFT cacluation
|
||||
scaleFFT(); // Scale FFT
|
||||
calcFFTAmp(); // Calculate amplitude from complex
|
||||
@@ -397,6 +398,23 @@ void ecmcFFT::calcFFTAmp() {
|
||||
}
|
||||
}
|
||||
|
||||
void ecmcFFT::removeDCOffset() {
|
||||
if(!cfgDcRemove_) {
|
||||
return;
|
||||
}
|
||||
|
||||
// calc average of raw data
|
||||
double sum = 0;
|
||||
for(unsigned int i = 0; i < cfgNfft_; ++i ) {
|
||||
sum += dataBuffer_[i];
|
||||
}
|
||||
double avg = sum / ((double)cfgNfft_);
|
||||
for(unsigned int i = 0; i < cfgNfft_; ++i ) {
|
||||
dataBuffer_[i]-=avg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ecmcFFT::printEcDataArray(uint8_t* data,
|
||||
size_t size,
|
||||
ecmcEcDataType dt,
|
||||
|
||||
@@ -56,6 +56,7 @@ class ecmcFFT {
|
||||
void calcFFT();
|
||||
void scaleFFT();
|
||||
void calcFFTAmp();
|
||||
void removeDCOffset();
|
||||
void initAsyn();
|
||||
void updateStatus(FFT_STATUS status); // Also updates asynparam
|
||||
static int dataTypeSupported(ecmcEcDataType dt);
|
||||
|
||||
Reference in New Issue
Block a user