C语言实现fir1函数

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:00:16
matlab里面可以用fir1函数求得滤波系数,因为我要设计的滤波器是中心频率可变的,所以不同频率要求不同的系统,就需要在我的C程序里面有求系数的过程,也就是用C语言实现fir1谁能帮帮我啊~~~感激不尽
FIR滤波器!

C语言实现fir1函数
matlab里面可以用fir1函数求得滤波系数,因为我要设计的滤波器是中心频率可变的,所以不同频率要求不同的系统,就需要在我的C程序里面有求系数的过程,也就是用C语言实现fir1函数。

#include <stdio.h>
#ifdef WIN32
#include <conio.h>
#endif

#define SAMPLE double /* define the type used for data samples */

void clear(int ntaps, SAMPLE z[])
{
int ii;
for (ii = 0; ii < ntaps; ii++) {
z[ii] = 0;
}
}

SAMPLE fir_basic(SAMPLE input, int ntaps, const SAMPLE h[], SAMPLE z[])
{
int ii;
SAMPLE accum;

/* store input at the beginning of the delay line */
z[0] = input;

/* calc FIR */
accum = 0;
for (ii = 0; ii < ntaps; ii++) {
accum += h[ii] * z[ii];
}

/* shift delay line */
for (ii = ntaps - 2; ii >= 0; ii--) {
z[ii + 1] = z[ii];
}

return accum;
}