#ifndef CALCULATION_HPP_ #define CALCULATION_HPP_ #include #include #include #include #include #include #include typedef struct { float real, imag; } complex; class Calculation { public: Calculation(); ~Calculation(); //将数据取平均值 static float mean(std::vector& vecData); //获取样本方差 static float getSample_variance(std::vector a); // hanning 窗 static void Hanning(std::vector& vecData, std::vector& vecHanningData); //快速傅里叶变换函数 static void FFT(int n, fftw_complex* in, fftw_complex* out); //快速傅里叶实数变换函数 static void FFT_R(int n, std::vector& vecData, fftw_complex* out); //快速傅里叶逆变换 static void iFFT(int n, fftw_complex* in, fftw_complex* out); static void _iFFT(std::vector& vecData, std::vector& vecFFTSpecData, std::vector& veciFFTData); static void _FFT(std::vector& vecData, std::vector& vecFFTrealData, std::vector& vecFFTimageData); //希尔伯特变换 static void hilbert(std::vector& vecData, std::vector& vecHilbertData, int N); //生成正弦信号 static void GenerateSin(std::vector& vecData); // FFT shift static void fftShift(fftw_complex* in, int l); //频谱图数据 static void FFTSpec(std::vector& vecData, std::vector& vecFFTSpecData); //包络图谱数据 static void envSpec(std::vector& vecData, std::vector& vecEnvSpecData, int StartFrequency, int EndFrequency); static void Integration(std::vector& vecData, std::vector& retData, double& resolution); static std::vector fftInterpolate(const std::vector& input, size_t outputSize); }; #endif // CALCULATION_HPP_