64 lines
1.4 KiB
C
64 lines
1.4 KiB
C
![]() |
#ifndef __ALGORITHM_H
|
|||
|
#define __ALGORITHM_H
|
|||
|
#include <stdint.h>
|
|||
|
|
|||
|
#define FFT_N 512 //<2F><><EFBFBD>帵<EFBFBD><E5B8B5>Ҷ<EFBFBD>任<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
|
|||
|
#define START_INDEX 4 //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|||
|
struct compx //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ
|
|||
|
{
|
|||
|
float real;
|
|||
|
float imag;
|
|||
|
};
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
|
|||
|
double my_floor(double x);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
double my_fmod(double x, double y);
|
|||
|
//<2F><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>
|
|||
|
double XSin( double x );
|
|||
|
//<2F><><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>
|
|||
|
double XCos( double x );
|
|||
|
//<2F><>ƽ<EFBFBD><C6BD>
|
|||
|
int qsqrt(int a);
|
|||
|
|
|||
|
/*******************************************************************
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>ͣ<EFBFBD>struct compx EE(struct compx b1,struct compx b2)
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嶨<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>a,b
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD>b<EFBFBD>ij˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************/
|
|||
|
struct compx EE(struct compx a,struct compx b);
|
|||
|
/*****************************************************************
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>ͣ<EFBFBD>void FFT(struct compx *xin,int N)
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD>任<EFBFBD><EFBFBD>FFT<EFBFBD><EFBFBD>
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*xin<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַָ<EFBFBD>룬struct<EFBFBD><EFBFBD>
|
|||
|
*****************************************************************/
|
|||
|
void FFT(struct compx *xin);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ֵ
|
|||
|
int find_max_num_index(struct compx *data,int count);
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
float w;
|
|||
|
int init;
|
|||
|
float a;
|
|||
|
|
|||
|
}DC_FilterData;
|
|||
|
|
|||
|
//ֱ<><D6B1><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>
|
|||
|
int dc_filter(int input,DC_FilterData * df);
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
float v0;
|
|||
|
float v1;
|
|||
|
}BW_FilterData;
|
|||
|
|
|||
|
int bw_filter(int input,BW_FilterData * bw);
|
|||
|
|
|||
|
|
|||
|
#endif /*__ALGORITHM_H*/
|
|||
|
|