?? zerofilt.c
字號:
/**************************************************************************
*
* ROUTINE
* zerofilt
*
* FUNCTION
* Direct form all-zero filter
*
* SYNOPSIS
* subroutine zerofilt(b, n, z, xy, len)
*
* formal
*
* data I/O
* name type type function
* -------------------------------------------------------------------
* b real i N+1 filter coefficients
* n int i Filter order
* z real i/o N+1 filter delay elements
* (maintained by the user)
* xy real i/o Input/Output data array
* len int i Number of samples to filter
*
***************************************************************************/
#include <string.h>
zerofilt(b, n, z, xy, len)
int n, len;
float b[], z[], xy[];
{
/*
float ar;
int t, j;
for (t = 0; t < len; t++)
{
z[0] = xy[t];
ar = 0.0;
for (j = n; j > 0; j--)
{
ar += z[j] * b[j];
z[j] = z[j-1];
}
xy[t] = ar + z[0] * b[0];
}
*/
size_t n_size = 40;
register float ar;
#define STEP(K) z[0] = xy[K]; \
ar = 0.0; \
ar += b[0] * z[0];\
ar += b[1] * z[1];\
ar += b[2] * z[2];\
ar += b[3] * z[3];\
ar += b[4] * z[4];\
ar += b[5] * z[5];\
ar += b[6] * z[6];\
ar += b[7] * z[7];\
ar += b[8] * z[8];\
ar += b[9] * z[9];\
ar += b[10] * z[10];\
xy[K] = ar;\
memmove( (char *)(z+1), (char *)(z), n_size);
STEP(0); STEP(1); STEP(2); STEP(3); STEP(4); STEP(5);
STEP(6); STEP(7); STEP(8); STEP(9); STEP(10); STEP(11);
STEP(12); STEP(13); STEP(14); STEP(15); STEP(16); STEP(17);
STEP(18); STEP(19); STEP(20); STEP(21); STEP(22); STEP(23);
STEP(24); STEP(25); STEP(26); STEP(27); STEP(28); STEP(29);
STEP(30); STEP(31); STEP(32); STEP(33); STEP(34); STEP(35);
STEP(36); STEP(37); STEP(38); STEP(39); STEP(40); STEP(41);
STEP(42); STEP(43); STEP(44); STEP(45); STEP(46); STEP(47);
STEP(48); STEP(49); STEP(50); STEP(51); STEP(52); STEP(53);
STEP(54); STEP(55); STEP(56); STEP(57); STEP(58); STEP(59);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -