kopia lustrzana https://github.com/kosme/arduinoFFT
commit
bb90780ace
|
@ -60,11 +60,11 @@ void setup()
|
|||
void loop()
|
||||
{
|
||||
/* Build raw data */
|
||||
double cycles = (((samples-1) * signalFrequency) / samplingFrequency); //Number of signal cycles that the sampling will read
|
||||
double ratio = twoPi * signalFrequency / samplingFrequency; // Fraction of a complete cycle stored at each sample (in radians)
|
||||
for (uint16_t i = 0; i < samples; i++)
|
||||
{
|
||||
vReal[i] = int8_t((amplitude * (sin((i * (twoPi * cycles)) / samples))) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin((i * (twoPi * cycles)) / samples) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vReal[i] = int8_t(amplitude * sin(i * ratio) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin(i * ratio) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vImag[i] = 0.0; //Imaginary part must be zeroed in case of looping to avoid wrong calculations and overflows
|
||||
}
|
||||
|
||||
|
|
|
@ -63,10 +63,10 @@ void loop()
|
|||
for(double frequency = startFrequency; frequency<=stopFrequency; frequency+=step_size)
|
||||
{
|
||||
/* Build raw data */
|
||||
double cycles = (((samples-1) * frequency) / sampling);
|
||||
double ratio = twoPi * frequency / sampling; // Fraction of a complete cycle stored at each sample (in radians)
|
||||
for (uint16_t i = 0; i < samples; i++)
|
||||
{
|
||||
vReal[i] = int8_t((amplitude * (sin((i * (twoPi * cycles)) / samples))) / 2.0);
|
||||
vReal[i] = int8_t(amplitude * sin(i * ratio) / 2.0);/* Build data with positive and negative values*/
|
||||
vImag[i] = 0; //Reset the imaginary values vector for each new frequency
|
||||
}
|
||||
/*Serial.println("Data:");
|
||||
|
|
|
@ -61,11 +61,11 @@ void setup()
|
|||
void loop()
|
||||
{
|
||||
/* Build raw data */
|
||||
double cycles = (((samples-1) * signalFrequency) / samplingFrequency); //Number of signal cycles that the sampling will read
|
||||
double ratio = twoPi * signalFrequency / samplingFrequency; // Fraction of a complete cycle stored at each sample (in radians)
|
||||
for (uint16_t i = 0; i < samples; i++)
|
||||
{
|
||||
vReal[i] = int8_t((amplitude * (sin((i * (twoPi * cycles)) / samples))) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin((i * (twoPi * cycles)) / samples) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vReal[i] = int8_t(amplitude * sin(i * ratio) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin(i * ratio) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vImag[i] = 0.0; //Imaginary part must be zeroed in case of looping to avoid wrong calculations and overflows
|
||||
}
|
||||
FFT = arduinoFFT(vReal, vImag, samples, samplingFrequency); /* Create FFT object */
|
||||
|
|
|
@ -61,11 +61,11 @@ void setup()
|
|||
void loop()
|
||||
{
|
||||
/* Build raw data */
|
||||
double cycles = (((samples-1) * signalFrequency) / samplingFrequency); //Number of signal cycles that the sampling will read
|
||||
double ratio = twoPi * signalFrequency / samplingFrequency; // Fraction of a complete cycle stored at each sample (in radians)
|
||||
for (uint16_t i = 0; i < samples; i++)
|
||||
{
|
||||
vReal[i] = int8_t((amplitude * (sin((i * (twoPi * cycles)) / samples))) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin((i * (twoPi * cycles)) / samples) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vReal[i] = int8_t(amplitude * sin(i * ratio) / 2.0);/* Build data with positive and negative values*/
|
||||
//vReal[i] = uint8_t((amplitude * (sin(i * ratio) + 1.0)) / 2.0);/* Build data displaced on the Y axis to include only positive values*/
|
||||
vImag[i] = 0.0; //Imaginary part must be zeroed in case of looping to avoid wrong calculations and overflows
|
||||
}
|
||||
FFT = arduinoFFT(vReal, vImag, samples, samplingFrequency); /* Create FFT object */
|
||||
|
|
|
@ -58,7 +58,7 @@ Destructor
|
|||
* **!Compute**(double *vReal, double *vImag, uint16_t samples, uint8_t dir);
|
||||
* **!Compute**(double *vReal, double *vImag, uint16_t samples, uint8_t power, uint8_t dir);
|
||||
* **Compute**(uint8_t dir);
|
||||
Calcuates the Fast Fourier Transform.
|
||||
Calculates the Fast Fourier Transform.
|
||||
* **!DCRemoval**(double *vData, uint16_t samples);
|
||||
* **DCRemoval**();
|
||||
Removes the DC component from the sample data.
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
28/12/23 v1.6.2
|
||||
Fix issue 52 and symplify calculation of synthetic data for examples 1, 2, 4, and 5.
|
||||
|
||||
25/07/23 v1.6.1
|
||||
Code optimization for speed improvements. See issue 84 for more details.
|
||||
|
||||
03/09/23 v1.6
|
||||
Include some functionality from development branch.
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
"email": "contact@arduinoos.com"
|
||||
}
|
||||
],
|
||||
"version": "1.6.1",
|
||||
"version": "1.6.2",
|
||||
"frameworks": ["arduino","mbed","espidf"],
|
||||
"platforms": "*",
|
||||
"headers": "arduinoFFT.h"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=arduinoFFT
|
||||
version=1.6.1
|
||||
version=1.6.2
|
||||
author=Enrique Condes <enrique@shapeoko.com>
|
||||
maintainer=Enrique Condes <enrique@shapeoko.com>
|
||||
sentence=A library for implementing floating point Fast Fourier Transform calculations on Arduino.
|
||||
|
|
|
@ -292,7 +292,7 @@ void arduinoFFT::Windowing(FFTWindow windowType, FFTDirection dir) {
|
|||
void arduinoFFT::Windowing(double *vData, uint16_t samples,
|
||||
FFTWindow windowType, FFTDirection dir) {
|
||||
// Weighing factors are computed once before multiple use of FFT
|
||||
// The weighing function is symetric; half the weighs are recorded
|
||||
// The weighing function is symmetric; half the weighs are recorded
|
||||
#warning("This method is deprecated and may be removed on future revisions.")
|
||||
double samplesMinusOne = (double(samples) - 1.0);
|
||||
for (uint16_t i = 0; i < (samples >> 1); i++) {
|
||||
|
|
Ładowanie…
Reference in New Issue