| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #ifndef WAVELIB_H_
- #define WAVELIB_H_
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #if defined(_MSC_VER)
- #pragma warning(disable : 4200)
- #pragma warning(disable : 4996)
- #endif
- #ifndef fft_type
- #define fft_type float
- #endif
- #ifndef cplx_type
- #define cplx_type float
- #endif
- typedef struct Filter
- {
- uint Len;
- float C0;
- float C1;
- float C2;
- float C3;
- } Filter;
- typedef struct
- {
- float x1;
- float x2;
- float x3;
- float x4;
- float x5;
- float x6;
- float x7;
- float y1;
- float y2;
- float y3;
- float y4;
- float y5;
- float y6;
- float y7;
- } hilbert_para; // �˲���ϵ��
- typedef struct wave_set *wave_object;
- wave_object wave_init(const char *wname);
- struct wave_set
- {
- char wname[50];
- int filtlength; // When all filters are of the same length. [Matlab uses zero-padding to make all filters of the same length]
- int lpd_len; // Default filtlength = lpd_len = lpr_len = hpd_len = hpr_len
- int hpd_len;
- int lpr_len;
- int hpr_len;
- float *lpd;
- float *hpd;
- float *lpr;
- float *hpr;
- float params[0];
- };
- typedef struct fft_t
- {
- fft_type re;
- fft_type im;
- } fft_data;
- typedef struct fft_set *fft_object;
- fft_object fft_init(int N, int sgn);
- struct fft_set
- {
- int N;
- int sgn;
- int factors[64];
- int lf;
- int lt;
- fft_data twiddle[1];
- };
- typedef struct fft_real_set *fft_real_object;
- fft_real_object fft_real_init(int N, int sgn);
- struct fft_real_set
- {
- fft_object cobj;
- fft_data twiddle2[1];
- };
- typedef struct conv_set *conv_object;
- conv_object conv_init(int N, int L);
- struct conv_set
- {
- fft_real_object fobj;
- fft_real_object iobj;
- int ilen1;
- int ilen2;
- int clen;
- };
- typedef struct wt_set *wt_object;
- wt_object wt_init(wave_object wave, const char *method, int siglength, int J);
- struct wt_set
- {
- wave_object wave;
- conv_object cobj;
- char method[10];
- int siglength; // Length of the original signal.
- int modwtsiglength; // Modified signal length for MODWT
- int outlength; // Length of the output DWT vector
- int lenlength; // Length of the Output Dimension Vector "length"
- int J; // Number of decomposition Levels
- int MaxIter; // Maximum Iterations J <= MaxIter
- int even; // even = 1 if signal is of even length. even = 0 otherwise
- char ext[10]; // Type of Extension used - "per" or "sym"
- char cmethod[10]; // Convolution Method - "direct" or "FFT"
- int N; //
- int cfftset;
- int zpad;
- int length[102];
- float *output;
- float params[0];
- };
- void filter_Init(void);
- float hilbert_filter(float *channel1, float *channel2, int len);
- void DWT_Matrix_Transform(float *srcData, s16 *resData, int srcLen);
- void modwt(wt_object wt, const float *inp);
- void imodwt(wt_object wt, float *dwtop);
- float *getMODWTmra(wt_object wt, float *wavecoeffs);
- void wave_free(wave_object object);
- void wt_free(wt_object object);
- extern struct file *g_fpuo, *g_fpio;
- #ifdef __cplusplus
- }
- #endif
- #endif /* WAVELIB_H_ */
|