求:c语言数字滤波器;要求:1Khz低通;20个数x0,x1,x2----x19;结果y0---y19

Python016

求:c语言数字滤波器;要求:1Khz低通;20个数x0,x1,x2----x19;结果y0---y19,第1张

1,低通滤波器传函k*f^2/(s^2+s*f/Q+f^2),确定你的电压增压k和品质因数,还有截止频率f。我就以f=1k,q=0.707,k=1为例

2,进行离散化。离散化方法以双线性变换为例。。。。然后得到Transfer function:

1.039e-005 z + 6.53e-006

------------------------

z^2 - 1.243 z + 0.2431

Sampling time: 0.001

3,然后就改写成差分方程。。。。把z^(-n)中的(-n)写成(k-n)即可。自己移相试试 就知道了。

#define pi 3.14159265358979384626

double h(double n)

{

double x

x=1.0/(pi*(n-64))

x*=sin(pi*(n-64))-sin(3*pi/4*(n-64))

x*=0.54-0.46*cos(2*pi*n/128)

x*=r128(n)

return x

}

double r128(double n)

{

double x

/*函数R128的公式你没给出,你自己完成吧*/

return x

}