直接型FIR滤波器的C语言实现
1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1));
void fir(short x[], short h[], short y[]) { int i,j; long long sum;乘法器使用次数:N*nfor (j = 0; j < N; j++) { sum = 0; for (i = 0; i < n; i++) sum += x[j-i] * h[i]; y[j] = sum >> 15; } }
2.逆推法:
void fir(short x[], short h[], short y[]) { int i,j; long sum;乘法器使用次数:N*nfor (j = 0; j < n; j++) { for (i = 0; i < N; i++) { sum = 0; sum = h[j] * x[i] y[i] += sum >> 15; } } }
3.倒序法:(输入输出可以是同一量)
void fir(short x[], short h[], short y[]) { int i,j; long long sum;for (j = N; j > 0; j–) { sum = 0; for (i = n; i > 0; i–) sum += x[j-i] * h[i]; y[j] = sum >> 15; } }