15khz最高的话,应该没有问题,
具体要看带宽指标和带外衰减斜率.
可以用数字滤波器软件来生成代码测试
比如下面这个参数:
200khz采样率,15khz中心频率,带宽1khz,4阶滤波器
- float DigFil(invar, setic)
- float invar; int setic;
- /******************************************************************************/
- /* Filter Solutions Version 2015 Nuhertz Technologies, L.L.C. */
- /* www.nuhertz.com */
- /* +1 602-279-2448 */
- /* 4th Order Band Pass Butterworth */
- /* Bilinear Transformation with Prewarping */
- /* Sample Frequency = 200.0 KHz */
- /* Standard Form */
- /* Arithmetic Precision = 4 Digits */
- /* */
- /* Center Frequency = 15.00 KHz */
- /* Pass Band Width = 1.000 KHz */
- /* */
- /******************************************************************************/
- /* */
- /* Input Variable Definitions: */
- /* Inputs: */
- /* invar float The input to the filter */
- /* setic int 1 to initialize the filter to zero */
- /* */
- /* Option Selections: */
- /* Standard C; Initializable; Internal States; Optimized; */
- /* */
- /* There is no requirement to ever initialize the filter. */
- /* The default initialization is zero when the filter is first called */
- /* */
- /******************************************************************************/
- /* */
- /* This software is automatically generated by Filter Solutions */
- /* no restrictions from Nuhertz Technologies, L.L.C. regarding the use and */
- /* distributions of this software. */
- /* */
- /******************************************************************************/
-
- {
- float sumnum=0.0, sumden=0.0; int i=0;
- static float states[8] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
- static float znum[5] = {
- 5.845e-08,
- 0.0,
- -2.338e-07,
- 0.0,
- 3.507e-07
- };
- static float zden[8] = {
- .9212,
- -6.634,
- 21.67,
- -41.81,
- 52.0,
- -42.68,
- 22.58,
- -7.055
- };
- if (setic==1){
- for (i=0;i<8;i++) states[i] = 461.4*invar;
- return 0.0;
- }
- else{
- sumnum = sumden = 0.0;
- for (i=0;i<8;i++){
- sumden += states[i]*zden[i];
- sumnum += states[i]*znum[i<5?i:8-i];
- if (i<7) states[i] = states[i+1];
- }
- states[7] = invar-sumden;
- sumnum += states[7]*znum[0];
- return sumnum;
- }
- }
复制代码
|