OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9040|回复: 5

基于MSP430数字滤波代码 带通滤波的

[复制链接]

1

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-18
在线时间
1 小时
发表于 2019-4-18 15:08:01 来自手机 | 显示全部楼层 |阅读模式
滤波的中心频率:300HZ
             带宽:50
              平坦度:0.5
              增益10
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-18
在线时间
1 小时
 楼主| 发表于 2019-4-18 15:08:22 来自手机 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-18
在线时间
1 小时
 楼主| 发表于 2019-4-18 15:14:43 来自手机 | 显示全部楼层
float DigFil(float invar, float *states){     const static float znum[7] = {         -2.196e-04,         0.0,         6.589e-04,         0.0,         -6.589e-04,         0.0,         2.196e-04     };     const static float zden[6] = {         .7776,         -4.52,         11.29,         -15.48,         12.28,         -5.345     };     float sumden(0.0), sumnum(0.0);     for (int i=0;i<6;i++){         sumden += states[i]*zden[i];         sumnum += states[i]*znum[i];         if (i<5) states[i] = states[i+1];     }     states[5] = invar-sumden;     sumnum += states[5]*znum[6];     return sumnum; }                   我自己弄这些代码不合适,大神能指点一下么
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-18
在线时间
1 小时
 楼主| 发表于 2019-4-18 15:17:42 来自手机 | 显示全部楼层
下面这些也是自己弄出来的  也不合适     float DigFil(invar, setic) float invar; int setic; /******************************************************************************/ /* Filter Solutions Version 2009                 Nuhertz Technologies, L.L.C. */ /*                                                            www.nuhertz.com */ /*                                                            +1 602-279-2448 */ /* 3rd Order Band Pass Butterworth                                            */ /* Bilinear Transformation with Prewarping                                    */ /* Sample Frequency = 5.000 KHz                                               */ /* Standard Form                                                              */ /* Arithmetic Precision = 4 Digits                                            */ /*                                                                            */ /* Center Frequency = 300.0 Rad/Sec                                           */ /* Pass Band Width = 20.00 Rad/Sec                                            */ /*                                                                            */ /******************************************************************************/ /*                                                                            */ /* 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;   Not 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[6] = {0.0,0.0,0.0,0.0,0.0,0.0};     static float znum[7] = {         -7.968e-09,         0.0,         2.39e-08,         0.0,         -2.39e-08,         0.0,         7.968e-09     };     static float zden[6] = {         .992,         -5.949,         14.88,         -19.86,         14.92,         -5.981     };     if (setic==1){         for (i=0;i<6;i++) states[i] = [i] = [i]*invar;         return 0.0;     }     else{         sumnum = sumden = 0.0;         for (i=0;i<6;i++){             sumden += states[i]*zden[i];             sumnum += states[i]*znum[i];             if (i<5) states[i] = states[i+1];         }         states[5] = invar-sumden;         sumnum += states[5]*znum[6];         return sumnum;     } }
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-4-18
在线时间
1 小时
 楼主| 发表于 2019-4-18 15:20:48 来自手机 | 显示全部楼层
下面这些也是。。。但是错误总是不合适搞不清楚    float DigFil(invar, setic) float invar; int setic; /******************************************************************************/ /* Filter Solutions Version 2009                 Nuhertz Technologies, L.L.C. */ /*                                                            www.nuhertz.com */ /*                                                            +1 602-279-2448 */ /* 3rd Order Band Pass Butterworth                                            */ /* Bilinear Transformation with Prewarping                                    */ /* Sample Frequency = 5.000 KHz                                               */ /* Standard Form                                                              */ /* Arithmetic Precision = 4 Digits                                            */ /*                                                                            */ /* Center Frequency = 300.0 Rad/Sec                                           */ /* Pass Band Width = 20.00 Rad/Sec                                            */ /*                                                                            */ /******************************************************************************/ /*                                                                            */ /* 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;   Not 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[6] = {0.0,0.0,0.0,0.0,0.0,0.0};     static float znum[7] = {         -7.968e-09,         0.0,         2.39e-08,         0.0,         -2.39e-08,         0.0,         7.968e-09     };     static float zden[6] = {         .992,         -5.949,         14.88,         -19.86,         14.92,         -5.981     };     if (setic==1){         for (i=0;i<6;i++) states[i] = [i] = [i]*invar;         return 0.0;     }     else{         sumnum = sumden = 0.0;         for (i=0;i<6;i++){             sumden += states[i]*zden[i];             sumnum += states[i]*znum[i];             if (i<5) states[i] = states[i+1];         }         states[5] = invar-sumden;         sumnum += states[5]*znum[6];         return sumnum;     } }     
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2510
金钱
2510
注册时间
2019-8-1
在线时间
184 小时
发表于 2020-1-4 08:39:34 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 17:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表