当前位置: 首页 > news >正文

C++ Butterworth N阶滤波器设计

介绍一个 Butterworth Nth 滤波器设计系数的函数,像 Matlab 函数一样的:

[bl,al]=butter(but_order,Ws); 

[bh,ah]=butter(but_order,2*bandwidth(1)/fs,'high');

rtfilter

在 Ububtu 中,容易找到:

$ aptitude search ~dbutterworth | grep lib

在这里插入图片描述
rtfilter 是一个库,提供一组实现多通道信号实时数字滤波器的例程(即使用相同的滤波器参数过滤多个信号)。它实现了FIR,IIR滤波器和用于浮点和双数据类型的下采样器(用于实数和复值信号)。还提供了额外的功能来设计几个常用的滤波器:Butterworth,Chebyshev,Windowed sinc,分析滤波器…

安装:

$ sudo aptitude install librtfilter-dev librtfilter1

-dev安装软件包后,您甚至可以找到一个示例(使用Butterworth过滤器用法)/usr/share/doc/librtfilter1/examples/butterworth.c。这个例子(以及相应的Makefile)也可以在这里找到。

以上内容参考:参考文章

测试

这里要对一个安装在机械臂的末端的六维力/力矩传感器数据进行处理,实质上就是多通道信号实时数字滤波。根据/usr/share/doc/librtfilter1/examples/butterworth.c可以发现,API 的使用接口是将多通道信号数据块作为输入,这里我按照 input_data 的数据存储格式,将六通道六维力/力矩传感器数据打包成数据块的形式(这里将传感器数据加载进 vector 容器中维护,每次只取该容器的后边数据块长度的近期数据,并解析给 input_data 数组)实时传递给 API,得到相同格式的输出 output_data 数据块,然后实时获取到 output_data 数据块最后一个周期的元素作为当前周期的实时滤波输出。

1)截止频率 10 hz、数据块长度 1000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)截止频率 10 hz、数据块长度 200

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)截止频率 6 hz、数据块长度 1000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4)截止频率 6 hz、数据块长度 200

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/33994.html

相关文章:

  • UXP下不用任何框架创建自己的插件并试运行
  • mac修改国内源快速安装brew
  • Me-and-My-Girlfriend-1靶场通关
  • 2.6 棋盘覆盖
  • JMU软件20 大数据技术复习(只写了对比18提纲的变动部分)
  • MySQL底层存储B-Tree和B+Tree原理分析
  • 基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目
  • 第十三章:Java反射机制
  • iLok USB不识别怎么办?
  • 【LeetCode与《代码随想录》】二叉树篇:做题笔记与总结-JavaScript版
  • 机器人运动|浅谈Time Elastic Band算法
  • 【Linux】网络基础(1)
  • 限流算法详解
  • Spark/Hive
  • HashMap底层的实现原理(JDK8)
  • 操作系统-整理
  • 系统换行符的思考
  • Wwise集成到unreal
  • 前端秘籍之=>八股文经卷=>(原生Js篇)【持续更新中...】
  • 【Python安装配置教程】
  • Spring-Retry失败重试
  • 【目标检测 DETR】通俗理解 End-to-End Object Detection with Transformers,值得一品。
  • 项目ER图和资料
  • 剑指 Offer 20. 表示数值的字符串(java+python)
  • 程序员的逆向思维
  • 吐血整理学习方法,2年多功能测试成功进阶自动化测试,月薪23k+......
  • mysql慢查询:pt-query-digest 分析
  • git的使用整合
  • XCPC第九站———背包问题!
  • 【软考 系统架构设计师】论文范文④ 论基于构件的软件开发