Implement dc-remove option.

This commit is contained in:
Anders Sandström
2020-04-07 16:30:35 +02:00
parent 38a4d51519
commit c63a4eb50d
2 changed files with 19 additions and 0 deletions

View File

@@ -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,

View File

@@ -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);