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**(double *vReal, double *vImag, uint16_t samples, uint8_t power, uint8_t dir);
|
||||||
* **Compute**(uint8_t dir);
|
* **Compute**(uint8_t dir);
|
||||||
Calcuates the Fast Fourier Transform.
|
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**(double *vD, uint16_t samples, double samplingFrequency);
|
||||||
* **MajorPeak**();
|
* **MajorPeak**();
|
||||||
Looks for and returns the frequency of the biggest spike in the analyzed signal.
|
Looks for and returns the frequency of the biggest spike in the analyzed signal.
|
||||||
|
|
|
@ -14,6 +14,7 @@ arduinoFFT KEYWORD1
|
||||||
|
|
||||||
ComplexToMagnitude KEYWORD2
|
ComplexToMagnitude KEYWORD2
|
||||||
Compute KEYWORD2
|
Compute KEYWORD2
|
||||||
|
DCRemoval KEYWORD2
|
||||||
Windowing KEYWORD2
|
Windowing KEYWORD2
|
||||||
Exponent KEYWORD2
|
Exponent KEYWORD2
|
||||||
Revision 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)
|
void arduinoFFT::Windowing(uint8_t windowType, uint8_t dir)
|
||||||
{// Weighing factors are computed once before multiple use of FFT
|
{// Weighing factors are computed once before multiple use of FFT
|
||||||
// The weighing function is symetric; half the weighs are recorded
|
// 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 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 dir);
|
||||||
void Compute(double *vReal, double *vImag, uint16_t samples, uint8_t power, 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);
|
double MajorPeak(double *vD, uint16_t samples, double samplingFrequency);
|
||||||
void Windowing(double *vData, uint16_t samples, uint8_t windowType, uint8_t dir);
|
void Windowing(double *vData, uint16_t samples, uint8_t windowType, uint8_t dir);
|
||||||
void ComplexToMagnitude();
|
void ComplexToMagnitude();
|
||||||
void Compute(uint8_t dir);
|
void Compute(uint8_t dir);
|
||||||
|
void DCRemoval();
|
||||||
double MajorPeak();
|
double MajorPeak();
|
||||||
void Windowing(uint8_t windowType, uint8_t dir);
|
void Windowing(uint8_t windowType, uint8_t dir);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue