kopia lustrzana https://github.com/kosme/arduinoFFT
Merge pull request #24 from Dantali0n/master
New function to perform DC removal from sample datapull/49/head
commit
d6d1aca0c9
|
@ -56,6 +56,9 @@ Destructor
|
|||
* **Compute**(double *vReal, double *vImag, uint16_t samples, uint8_t power, uint8_t dir);
|
||||
* **Compute**(uint8_t dir);
|
||||
Calcuates the Fast Fourier Transform.
|
||||
* **DCRemoval**(double *vData, uint16_t samples);
|
||||
* **DCRemoval**();
|
||||
Removes the DC component from the sample data.
|
||||
* **MajorPeak**(double *vD, uint16_t samples, double samplingFrequency);
|
||||
* **MajorPeak**();
|
||||
Looks for and returns the frequency of the biggest spike in the analyzed signal.
|
||||
|
|
|
@ -14,6 +14,7 @@ arduinoFFT KEYWORD1
|
|||
|
||||
ComplexToMagnitude KEYWORD2
|
||||
Compute KEYWORD2
|
||||
DCRemoval KEYWORD2
|
||||
Windowing KEYWORD2
|
||||
Exponent KEYWORD2
|
||||
Revision KEYWORD2
|
||||
|
|
|
@ -177,6 +177,39 @@ void arduinoFFT::ComplexToMagnitude(double *vReal, double *vImag, uint16_t sampl
|
|||
}
|
||||
}
|
||||
|
||||
void arduinoFFT::DCRemoval()
|
||||
{
|
||||
// calculate the mean of vData
|
||||
double mean = 0;
|
||||
for (uint16_t i = 1; i < ((this->_samples >> 1) + 1); i++)
|
||||
{
|
||||
mean += this->_vReal[i];
|
||||
}
|
||||
mean /= this->_samples;
|
||||
// Subtract the mean from vData
|
||||
for (uint16_t i = 1; i < ((this->_samples >> 1) + 1); i++)
|
||||
{
|
||||
this->_vReal[i] -= mean;
|
||||
}
|
||||
}
|
||||
|
||||
void arduinoFFT::DCRemoval(double *vData, uint16_t samples)
|
||||
{
|
||||
// calculate the mean of vData
|
||||
#warning("This method is deprecated and will be removed on future revisions.")
|
||||
double mean = 0;
|
||||
for (uint16_t i = 1; i < ((samples >> 1) + 1); i++)
|
||||
{
|
||||
mean += vData[i];
|
||||
}
|
||||
mean /= samples;
|
||||
// Subtract the mean from vData
|
||||
for (uint16_t i = 1; i < ((samples >> 1) + 1); i++)
|
||||
{
|
||||
vData[i] -= mean;
|
||||
}
|
||||
}
|
||||
|
||||
void arduinoFFT::Windowing(uint8_t windowType, uint8_t dir)
|
||||
{// Weighing factors are computed once before multiple use of FFT
|
||||
// The weighing function is symetric; half the weighs are recorded
|
||||
|
|
|
@ -72,10 +72,12 @@ public:
|
|||
void ComplexToMagnitude(double *vReal, double *vImag, uint16_t samples);
|
||||
void Compute(double *vReal, double *vImag, uint16_t samples, uint8_t dir);
|
||||
void Compute(double *vReal, double *vImag, uint16_t samples, uint8_t power, uint8_t dir);
|
||||
void DCRemoval(double *vData, uint16_t samples);
|
||||
double MajorPeak(double *vD, uint16_t samples, double samplingFrequency);
|
||||
void Windowing(double *vData, uint16_t samples, uint8_t windowType, uint8_t dir);
|
||||
void ComplexToMagnitude();
|
||||
void Compute(uint8_t dir);
|
||||
void DCRemoval();
|
||||
double MajorPeak();
|
||||
void Windowing(uint8_t windowType, uint8_t dir);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue