| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #ifndef EMG_UTIL_H
- #define EMG_UTIL_H
- // SOS 绯绘暟锛�20-450 Hz 甯﹂�氾紝fs=1000Hz锛�
- // const double sos[2][6] = {
- // {1.0000000000, -2.0000000000, 1.0000000000, 1.0, -1.8794729180, 0.8944729180},
- // {1.0000000000, -2.0000000000, 1.0000000000, 1.0, -1.9657267688, 0.9676167688}
- // };
- // 宸寸壒娌冩柉婊ゆ尝鍣ㄥ弬鏁癝OS 绯绘暟锛�20-450 Hz 甯﹂�氾紝fs=1000Hz锛�
- const double sos[2][6] = {
- {1.0000000000, 2.0000000000, 1.0000000000, 1.0, 1.5597000000, 0.6416000000},
- {1.0000000000, -2.0000000000, 1.0000000000, 1.0, -1.8225000000, 0.8373000000}
- };
- // 鐢� MATLAB 鐢熸垚骞跺浐鍖栧埌 C 鐨勭郴鏁帮紙50Hz 闄锋尝锛宖s=1000Hz锛夐櫡娉㈡护娉⒙峰弬鏁�
- // const double NOTCH_B[3] = { 0.961538461538462, -1.846153846153846, 0.961538461538462 };
- // const double NOTCH_A[3] = { 1.000000000000000, -1.846153846153846, 0.876923076923077 };
- const double NOTCH_B[3] = {0.9955, -1.8936, 0.9955};
- const double NOTCH_A[3] = {1.0000, -1.8936, 0.9911};
- typedef struct {
- double b[3]; // 鍒嗗瓙绯绘暟: b0, b1, b2
- double a[3]; // 鍒嗘瘝绯绘暟: a0, a1, a2 (a0 閫氬父褰掍竴鍖栦负 1)
- double x1, x2; // 杈撳叆寤惰繜鍗曞厓: x[n-1], x[n-2]
- double y1, y2; // 杈撳嚭寤惰繜鍗曞厓: y[n-1], y[n-2]
- } NotchFilter;
- float f0 = 50.0f;//宸ラ
- float q = 30.0f;//璐ㄩ噺绯绘暟
- float low_cut = 20.0f; // 浣庢埅姝㈤鐜�
- float high_cut = 450.0f; // 楂樻埅姝㈤鐜�
- int order = 4; // 婊ゆ尝鍣ㄩ樁鏁�
- // 宸寸壒娌冩柉婊ゆ尝鍣ㄧ粨鏋勪綋锛坉ouble绫诲瀷锛�
- typedef struct {
- double x1, x2;
- double y1, y2;
- } BiquadState;
- // Symlet 4 (sym4) 婊ゆ尝鍣ㄧ郴鏁帮紙鏍囧噯鍖栵級
- static double sym4_h[8] = {
- 0.0266700579010166,
- 0.0607514995432352,
- -0.0656160944756398,
- -0.1498879107562273,
- 0.4829629131445341,
- 0.8365163037378608,
- 0.2242848007341553,
- -0.1077300958383618
- };
- static double sym4_g[8] = {
- -0.1077300958383618,
- -0.2242848007341553,
- 0.8365163037378608,
- -0.4829629131445341,
- -0.1498879107562273,
- 0.0656160944756398,
- 0.0607514995432352,
- -0.0266700579010166
- };
- void emg_denoised(double *emg_raw, int length, int fs, double *emg_denoised);
- #endif // EMG_UTIL_H
|