algorithm.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef __ALGORITHM_H
  2. #define __ALGORITHM_H
  3. #include <stdint.h>
  4. #define FFT_N 512 //定义傅里叶变换的点数
  5. #define START_INDEX 4 //低频过滤阈值
  6. struct compx //定义一个复数结构
  7. {
  8. float real;
  9. float imag;
  10. };
  11. //向下取整
  12. double my_floor(double x);
  13. //求余运算
  14. double my_fmod(double x, double y);
  15. //正弦函数
  16. double XSin( double x );
  17. //余弦函数
  18. double XCos( double x );
  19. //开平方
  20. int qsqrt(int a);
  21. /*******************************************************************
  22. 函数原型:struct compx EE(struct compx b1,struct compx b2)
  23. 函数功能:对两个复数进行乘法运算
  24. 输入参数:两个以联合体定义的复数a,b
  25. 输出参数:a和b的乘积,以联合体的形式输出
  26. *******************************************************************/
  27. struct compx EE(struct compx a,struct compx b);
  28. /*****************************************************************
  29. 函数原型:void FFT(struct compx *xin,int N)
  30. 函数功能:对输入的复数组进行快速傅里叶变换(FFT)
  31. 输入参数:*xin复数结构体组的首地址指针,struct型
  32. *****************************************************************/
  33. void FFT(struct compx *xin);
  34. //读取峰值
  35. int find_max_num_index(struct compx *data,int count);
  36. typedef struct
  37. {
  38. float w;
  39. int init;
  40. float a;
  41. }DC_FilterData;
  42. //直流滤波器
  43. int dc_filter(int input,DC_FilterData * df);
  44. typedef struct
  45. {
  46. float v0;
  47. float v1;
  48. }BW_FilterData;
  49. int bw_filter(int input,BW_FilterData * bw);
  50. #endif /*__ALGORITHM_H*/