搜索
bottom↓
回复: 70

【eBox生态圈】fir滤波器四模式,不用FDAtool计算,非常强大!

  [复制链接]

出0入17汤圆

发表于 2017-8-18 04:09:28 | 显示全部楼层 |阅读模式
本帖最后由 shentqlf 于 2017-8-18 11:31 编辑

eBox最新支持Fir滤波器,支持低通、高通、带通、带阻四种模式。

最重要的是他不需要FDAtool计算参数表。自带了参数的计算工具。而且支持多种窗体RECTANGULAR, BARTLETT, HANNING, HAMMING, BLACKMAN
首先要感谢:http://www.labbookpages.co.uk/audio/firWindowing.html
这个库真是太好用了,网上看了各种代码,都觉得不太好,从GitHub上找到了一份代码,顺便找到了那个愿网址,看到这个代码后觉得非常厉害!果断移植。

  1.    
  2.             int kaiserWindowLength;
  3.         float sampFreq = 1000;//采样率
  4.    
  5.         // Low and high pass filters
  6.         float transFreq1 = 20;
  7.         float transFreq2 = 70;

  8. //设定滤波器特性,0.01:ripple;10: transition band width;sampFreq:采样率
  9.     //该函数会根据前两个值得设定,计算出滤波器阶数。
  10.         fir.calculateKaiserParams(0.01, 10, sampFreq, &kaiserWindowLength, &beta);
  11. //根据生成的窗口长度,初始化一个自己想要的滤波器
  12. //        float *lpf = fir.create1TransSinc(kaiserWindowLength, transFreq1, sampFreq, LOW_PASS);
  13.         float *lpf = fir.create1TransSinc(kaiserWindowLength, transFreq1, sampFreq, HIGH_PASS);
  14. //        float *lpf = fir.create2TransSinc(kaiserWindowLength, transFreq1,transFreq2, sampFreq, BAND_PASS);
  15. //        float *lpf = fir.create2TransSinc(kaiserWindowLength, transFreq1,transFreq2, sampFreq, BAND_STOP);
  16.         float *lpf_kaiser = fir.createKaiserWindow(lpf, NULL, kaiserWindowLength, beta);
  17.     uart1.printf("kaiserWindowLength = %d\r\n",kaiserWindowLength);
  18.     uart1.printf("beta = %d\r\n",beta);
  19. //使用Kaiser Window数据设置滤波器的参数。
  20.     fir.set(lpf_kaiser,kaiserWindowLength);
复制代码


fir.calculateKaiserParams(0.01, 10, sampFreq, &kaiserWindowLength, &beta);


float *lpf_kaiser = fir.createKaiserWindow(lpf, NULL, kaiserWindowLength, beta);


生成一个信号
  1.     for(int i = 0; i < LEN;i++)
  2.         in_signal[i] =50 + 10.0*sin( 2*PI *50* i * 1e-3) + 10.0*sin( 2*PI *10* i * 1e-3)   ;
复制代码


查看动态内存剩余量
  1.     uart1.printf("mem : %d\r\n",ebox_get_free());
复制代码

  1.     start = micros();
  2.     for(int i = 0; i < LEN; i++)
  3.         out_signal[i] = fir.in(in_signal[i]);//将数据依次输入滤波器,同时将输出的数据保存
  4.     end = micros();
  5.     uart1.printf("micros per calculation = %0.1fus\r\n",(end - start)/1000.0);//计算当前滤波器的一次计算所需时间
  6.     for(int i = 0; i < LEN; i++)
  7.     {
  8.         out_signal[i] = fir.in(in_signal[i]);
  9.         uart1.printf("%d\t",in_signal[i]);   //打印输入数据
  10.         uart1.printf("%d\t",out_signal[i]);   //打印输出数据
  11.         uart1.println();
  12.     }
复制代码


将数据拷贝到Excel表格。做出图形。
高通滤波器输出结果
高于20Hz信号输出


低通滤波器输出结果
低于20Hz输出


带通滤波器
20Hz-70Hz之间的信号通过


带阻滤波器
20Hz-70Hz之间的信号不能通过


带阻滤波器
5Hz-70Hz之间的信号不能通过



关于内存占用量
内存占用量和滤波器所使用的阶数( 即kaiserWindowLength)的大小有关:
kaiserWindowLength = 225
mem : 3920bytes

kaiserWindowLength = 113
mem : 2128bytes

kaiserWindowLength = 76
mem : 1520bytes

优化后基本上内存占用量减少一半。

关于计算量



上传eBox_V2.0完整代码:
大家不要只记得下载哦,去GitHub点个star哦!


eBox最新代码请关注:
eBox_STM32F1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-8-18 07:14:22 来自手机 | 显示全部楼层
关注看效果不错

出0入0汤圆

发表于 2017-8-18 07:28:54 | 显示全部楼层
关注,支持!

出90入0汤圆

发表于 2017-8-18 08:10:11 来自手机 | 显示全部楼层
看起来很不错~

出0入0汤圆

发表于 2017-8-18 08:31:20 | 显示全部楼层
效果不错,学习学习

出0入0汤圆

发表于 2017-8-18 08:34:43 | 显示全部楼层
这个硬件有要求吗,还是说51,stm32都可以实现

出0入0汤圆

发表于 2017-8-18 08:43:35 | 显示全部楼层
超实用的滤波器算法。

这个是真的要给楼主1万个攒,这种东西,不要太爽。
现在唯一担心的是,它对MCU的计算速度和RAM的要求是多大。


出0入0汤圆

发表于 2017-8-18 08:47:35 | 显示全部楼层
楼主,打印出来的内存占用量和滤波时间忘记说啦

出0入0汤圆

发表于 2017-8-18 08:53:02 | 显示全部楼层

出0入0汤圆

发表于 2017-8-18 09:16:10 | 显示全部楼层
关注一下,谢谢分享

出0入8汤圆

发表于 2017-8-18 09:21:12 | 显示全部楼层
很6,太实用了这个

出0入0汤圆

发表于 2017-8-18 09:40:44 | 显示全部楼层
这个非常好,不过还是硬件滤波方便。

出0入0汤圆

发表于 2017-8-18 10:04:47 | 显示全部楼层
好资料,谢谢LZ

出0入17汤圆

 楼主| 发表于 2017-8-18 10:17:40 | 显示全部楼层
河图洛书 发表于 2017-8-18 08:34
这个硬件有要求吗,还是说51,stm32都可以实现

最好是STM32或者其他32位MCU,计算量不小。内存占用也挺大的。
FIR至少也得好几十阶,效果才会比较理想

出0入17汤圆

 楼主| 发表于 2017-8-18 10:18:38 | 显示全部楼层
kinsno 发表于 2017-8-18 08:43
超实用的滤波器算法。

这个是真的要给楼主1万个攒,这种东西,不要太爽。

已经在更新在上面了。
这里内存和速度还可以有优化的空间

出0入17汤圆

 楼主| 发表于 2017-8-18 10:19:49 | 显示全部楼层
tianheyun12 发表于 2017-8-18 09:40
这个非常好,不过还是硬件滤波方便。

是的,能用硬件的还是用硬件。硬件做不到的时候可以用软件的

出0入0汤圆

发表于 2017-8-18 12:17:05 来自手机 | 显示全部楼层
感谢楼主分享

出0入4汤圆

发表于 2017-8-18 12:43:11 | 显示全部楼层
点赞  
   

出0入0汤圆

发表于 2017-8-18 16:28:51 | 显示全部楼层
谢谢分享,下载学习下。

出0入12汤圆

发表于 2017-8-18 16:51:21 | 显示全部楼层
能不能1进1出?

出0入0汤圆

发表于 2017-8-18 16:52:25 | 显示全部楼层
看图形,很不错,赞一个

出0入0汤圆

发表于 2017-8-18 17:09:44 | 显示全部楼层
谢谢分享。功能越来越强大。

出0入17汤圆

 楼主| 发表于 2017-8-18 18:00:22 | 显示全部楼层
Excellence 发表于 2017-8-18 17:09
谢谢分享。功能越来越强大。

嘿嘿,过两天再吧PID的整理下发上来

出0入76汤圆

发表于 2017-8-18 18:05:51 | 显示全部楼层
很不错, 感谢分享, 点个赞先。

出0入0汤圆

发表于 2017-8-18 19:30:52 来自手机 | 显示全部楼层
window性能比等波纹差远了

出0入17汤圆

 楼主| 发表于 2017-8-18 22:18:01 | 显示全部楼层

是一进一出,但是有相位的平移

出675入8汤圆

发表于 2017-8-18 23:33:26 来自手机 | 显示全部楼层
对pid感兴趣

出0入17汤圆

 楼主| 发表于 2017-8-19 00:12:38 | 显示全部楼层
xycfwrj 发表于 2017-8-18 19:30
window性能比等波纹差远了

等波纹的怎么弄?求样板数学不好,没弄过

出0入0汤圆

发表于 2017-8-19 18:37:48 来自手机 | 显示全部楼层
带阻的1mhz-2mhz怎么配置?谢了

出0入17汤圆

 楼主| 发表于 2017-8-19 19:34:12 | 显示全部楼层
aming2046 发表于 2017-8-19 18:37
带阻的1mhz-2mhz怎么配置?谢了

STM32F1干不了~~~

出0入0汤圆

发表于 2017-8-19 22:31:22 来自手机 | 显示全部楼层
shentqlf 发表于 2017-8-19 00:12
等波纹的怎么弄?求样板数学不好,没弄过

fdatool里可以选择,
算法也是公开的,
最早是在ieee发表的

出0入0汤圆

发表于 2017-8-20 17:13:10 来自手机 | 显示全部楼层
学习好算法以及实现算法的好工具

出0入17汤圆

 楼主| 发表于 2017-8-22 17:55:43 | 显示全部楼层
凌晨一点 发表于 2017-8-20 17:13
学习好算法以及实现算法的好工具

希望对大家有用

出0入0汤圆

发表于 2017-8-22 20:39:08 来自手机 | 显示全部楼层
楼主无私奉献啊

出0入0汤圆

发表于 2017-8-22 21:10:28 来自手机 | 显示全部楼层
这个滤波器,是用在  哪里的?

出0入17汤圆

 楼主| 发表于 2017-8-22 21:19:15 | 显示全部楼层
zwb917 发表于 2017-8-22 21:10
这个滤波器,是用在  哪里的?

经典的数字滤波器,比如采集心电信号需要滤除50hz的干扰,可以直接使用这个代替硬件的滤波器。使得硬件系统更好调试些

出0入0汤圆

发表于 2017-8-23 09:05:33 | 显示全部楼层
看着效果还是很不错的

出0入17汤圆

 楼主| 发表于 2017-8-23 09:23:37 来自手机 | 显示全部楼层
cat_li 发表于 2017-8-23 09:05
看着效果还是很不错的

恩恩,还可以吧

出0入0汤圆

发表于 2017-8-23 09:54:41 来自手机 | 显示全部楼层
不错的滤波器,要是能对芯片速度能优化就完美了

出0入17汤圆

 楼主| 发表于 2017-8-23 09:59:15 来自手机 | 显示全部楼层
jeoo8888 发表于 2017-8-23 09:54
不错的滤波器,要是能对芯片速度能优化就完美了

用dsp数学库会更快些

出0入0汤圆

发表于 2018-4-26 23:18:39 | 显示全部楼层
这个FIR对我真有用

出0入0汤圆

发表于 2018-4-27 08:20:03 | 显示全部楼层
好东西,留名收藏

出0入0汤圆

发表于 2018-4-27 10:01:35 | 显示全部楼层
好资料,收藏备用

出0入0汤圆

发表于 2018-4-28 11:28:49 | 显示全部楼层
做这种库,基本上没什么用,当自己的练习

出0入0汤圆

发表于 2018-4-28 13:01:54 | 显示全部楼层
好资料,收藏! 谢谢!

出0入0汤圆

发表于 2018-4-28 16:21:40 | 显示全部楼层
ebox生态圈,愿望不小啊!

出0入0汤圆

发表于 2018-4-28 18:44:20 来自手机 | 显示全部楼层
FIR滤波用处多多,多谢分享!

出0入0汤圆

发表于 2018-4-28 22:36:49 | 显示全部楼层
楼主有做IIR的打算吗?

出0入0汤圆

发表于 2018-4-29 07:11:49 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2018-4-29 07:17:18 | 显示全部楼层
这个不错,在STM32上用一下,看样子很实用

出0入0汤圆

发表于 2018-5-15 10:17:46 | 显示全部楼层
谢谢楼主分享,准备试一下。

出0入0汤圆

发表于 2018-5-15 12:15:01 | 显示全部楼层
效果不错,关注

出10入95汤圆

发表于 2018-8-31 10:54:36 | 显示全部楼层
FIR滤波 强帖!
多谢分享!

出0入0汤圆

发表于 2018-8-31 11:03:51 | 显示全部楼层
MARK,程序滤波,先谢楼主

出0入0汤圆

发表于 2018-8-31 20:57:26 | 显示全部楼层
这个厉害了!  学习学习

出0入0汤圆

发表于 2018-9-13 20:09:59 | 显示全部楼层
    好东西一定得收藏了。

出0入0汤圆

发表于 2018-9-14 19:37:11 | 显示全部楼层
mark FIR滤波器

出0入0汤圆

发表于 2018-11-27 20:51:16 | 显示全部楼层
感谢楼主分享

出50入0汤圆

发表于 2018-11-27 21:08:10 | 显示全部楼层
MARK FIR滤波

出0入0汤圆

发表于 2018-11-27 22:06:52 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2018-11-28 09:37:21 来自手机 | 显示全部楼层
软件滤波器,非常棒!

出0入0汤圆

发表于 2018-11-28 11:20:17 | 显示全部楼层
谢谢楼主, 有空学习下。

出0入0汤圆

发表于 2018-12-2 15:59:48 | 显示全部楼层
好东西,谢谢楼主!

出10入12汤圆

发表于 2018-12-2 16:13:08 | 显示全部楼层
看了下 确实写的不错!!!!!1

出0入0汤圆

发表于 2020-11-27 18:08:55 | 显示全部楼层
楼主有没有STM32F4的版本啊

出0入79汤圆

发表于 2020-11-27 19:06:46 来自手机 | 显示全部楼层
还是matlab功能丰富,好用。
记得有个外国网站也是有滤波器交互式设计,很好用,最近说作者挂了,用不了了,在此向那个作者致敬!

出0入0汤圆

发表于 2020-11-28 09:35:07 来自手机 | 显示全部楼层
这个非常不错,收藏了

出0入4汤圆

发表于 2021-11-2 06:03:26 来自手机 | 显示全部楼层
很有用滤波

出0入0汤圆

发表于 2021-11-2 08:21:51 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2021-11-2 08:28:27 | 显示全部楼层
C 语言的FIR滤波器,可惜楼主没有评估所需软件资源情况!

出0入0汤圆

发表于 2021-11-3 19:49:48 来自手机 | 显示全部楼层
问问pid自整定使用效果,在温控上怎样?有没有测试报告
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 06:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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