matlab 与C语言关于filter函数的实现_fir 滤波器 c 语言 如何对应 matlab的-程序员宅基地

技术标签: matlab  filter  C  c语言  

MATLAB实现滤波器,滤波器类似:低通、高通、带通、带阻。

实现方式:(1)利用Matlab代码生成DLL供其他模块调用方法。

优点:实现速度快,可利用C直接调用matlabDLL快速实现算法功能,无需用C考虑算法实现过程。

缺点:运行需要电脑上具备matlab运行环境MCR(或电脑上具有完整的matlab版本存在),且配置调试麻烦。

如翻译bpfilter滤波器,C调用matlabDLL

1:添加matlab 生成的.dll .h .lib到工程中。

 


    2:添加相应头文件:

#pragma commentlib"libeng.lib" )

#pragma commentlib"libmx.lib" )

#pragma commentlib"libmat.lib" )

#pragma commentlib"mclmcrrt.lib" )

#include "bpfilter.h"

#pragma commentlib"bpfilter.lib" )

#include "mclcppclass.h"    

3:利用特定函数实现数据操作,转入-调用DLL计算-转出。

参考http://blog.163.com/rongting_chen/blog/static/164906844201252354518462/

方法二:直接用C语言逐条翻译matlab滤波器。

优点:C代码可脱离matlab环境独立运行

缺点:翻译matlab代码费时费力。

如:翻译低通滤波器主函数:y=lowp(x,f1,f3,rp,rs,Fs)

子函数1:[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);%wn就是0.1即是rp---通带衰减

子函数2[bz1,az1]=cheby1(n,rp,wp/pi);

子函数3 y=filter(bz1,az1,x);%函数被封装隐藏,对序列x滤波后得到的序列y

子函数1cheb1ord求阶数,已翻译。

子函数2cheby1翻译。求滤波器结构分子分母

包含{cheb1ap,cheb1ap,lp2lp,bilinear

...等子函数

}

子函数3filter实现输入信号与滤波器结构卷积运算,原理如下,源代码不可见

系统输入输出常系数差分方程:

x[k]:输入,y[k]:输出,已知差分方程N个初始状态y[k]x[k],-N<=k<=-1;

迭代计算系统输出:
b为分子系数矩阵,a为分母系数矩阵;

Filterb,a,x)函数示例:来源网络。


MATLAB滤波器翻译成C语言关键,filter函数--built in function

搞了一直总算找到点有用的资料。

http://stackoverflow.com/questions/17506343/how-can-i-write-the-matlab-filter-function-myself/20970185

I have found a text described the Direct Form II Transposed used in the Matlab filter function and it works perfectly. See script below. Other implementations are also available but with error of around 1e-15, you'll see this by running the script yourself.

 

一种实现方式是根据差分方式的方式进行递归运算。


function y1=filter_test01 (bq,aq,x,ord)

详见:点击打开链接

另一种是Direct Form II Transposed

%Direct Form II Transposed

function y2=filter_test02 (bq,aq,u,ord)

详见:点击打开链接

三种运算速度及误差对比:

1MATLAB filter函数

2filter_test01

3:filter_test02

 

Naive implementation实现方法运算速度

误差分析:4

 


 

 


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/enjoy_learn/article/details/53471266

智能推荐

三维点云综述_三维点云图的表现形式-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏11次。 三维图像的表现形式有:深度图(以灰度表达物体与相机的距离)、几何模型(CAD软件建立)、点云模型(最常见、最基础)。图像处理三个层次:低层次:图像强化、滤波、边缘检测等中层次:连通区域标记(label)、图像分割等高层次:物体识别、场景分析点云处理三个层次:低层次:滤波、关键点(keypoints)、分割(segmention)中层次:特征描述(feature)高层次:配准(registr..._三维点云图的表现形式

使用Web前端技术实现的梦幻VR虚拟现实效果-程序员宅基地

文章浏览阅读3.4k次。VR/AR是近两年的热点, 而基于浏览器的Web VR技术在这两年的发展中,也慢慢的展现了自己强大的技术号召力, 很多新的基于web的VR类库,例如, A-frame, forge.js等等都出现在技术社区中, 各种webVR类库也越来越成熟起来, 在今天这篇代码把玩的文章中,我们精挑细选了五个最惊为天人的Web 3D及其VR效果,希望大家能够觉得给力, 小编废话不说, 请看以下VR效果~ ..._vr查看商品原理前端实现

DSCP 与IP 优先级IP优先级_dscp 48-程序员宅基地

文章浏览阅读2w次,点赞10次,收藏52次。首先看IPv4包头如下其中,Qos用到的是Tos定义有下面两种:老的IPv4 TOS Byte定义和值 新的DSCP定义和值 DSCP值DSCP ValueMeaningDrop ProbabilityEquivalent IP Precedence Value101 110 (_dscp 48

Windows 环境搭建Redis集群_windows redis集群管理-程序员宅基地

文章浏览阅读427次。环境以及引用资料1.windows server 2008 r2 enterprise (木有办法,公司的服务器全是如此,就这种环境搭建吧)2.redis官方资料下载: https://redis.io/download3.redis官方没有提供相关的程序包,但是Microsoft Open Tech group提供并维护了相关的redis安装包 https://github.com/MSOpe..._windows redis集群管理

腾讯下载QLV文件装换MP4_qlv文件转换成mp4狸猫-程序员宅基地

文章浏览阅读1.1k次。QLV格式是视频腾讯的一种视频格式,或者说是一个电脑缓存文件,试着把.qlv改成.mp4或.flv都没有用,用格式工厂,狸猫等转换软件转换也根本无法识别或转换失败。但这并不意味着没有办法,其实真正的方法是不用任何工具,只需电脑自带的运行程序cmd:1,我们要显示隐藏文件。在计算机-文件夹选项中,显示隐藏的文件、文件夹和驱动器;2,进入视频的节目缓存文件夹,在“vodcache”隐藏_qlv文件转换成mp4狸猫

python实现计算精度、召回率和F1值_python计算f1值-程序员宅基地

文章浏览阅读4.3w次,点赞31次,收藏193次。python实现计算精度、召回率和F1值  摘要:在深度学习的分类任务中,对模型的评估或测试时需要计算其在验证集或测试集上的预测精度(prediction/accuracy)、召回率(recall)和F1值。本文首先简要介绍如何计算精度、召回率和F1值,其次给出python编写的模块,可直接将该模块导入在自己的项目中,最后给出这个模块的实际使用效果。一、混淆矩阵及P、R、F1计算原理1、混淆..._python计算f1值

随便推点

Effective C++ 2e Item31_cpp 2e31-程序员宅基地

文章浏览阅读908次。条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用本条款听起来很复杂,其实不然。它只是一个很简单的道理,真的,相信我。先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这_cpp 2e31

算法笔记习题 2-9小节_100000568算法笔记-程序员宅基地

文章浏览阅读384次。算法笔记@Ada_Lake算法笔记代码保留地~~~2.9小节——C/C++快速入门-&gt;补充有关cin 和 coutcout 中控制 double型 的精确度- 1. 加入#include头文件- 2. cout &lt;&lt; setiosflags(ios :: fixed) &lt;&lt; setprecision(2)&lt;&lt; 123.4567 &lt;&lt..._100000568算法笔记

RadiAnt DICOM Viewer 2021 绿色版_radiant dicom viewer绿色-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏3次。RadiAnt DICOM Viewer 2021 破解版是一个专业的医学图像浏览器,使用它可以为你带来高效便捷的DICOM文件查看。为图像的操作和测量提供许多便利的工具,支持流体缩放和平移、亮度和对比度调整,负模式、图像的旋转和手绘工具,不仅医生可以进行高效的文件查阅,还可以更好地为病患进行讲解。软件对于电脑性能的要求很低,并且可以超快速的打造图像。新功能:将研究发送到 PACS(附加包)。本地存档中的 CSV 导出。改进和错误修复:添加了通过上下文菜单快速打开系列的选项。添加了在按住_radiant dicom viewer绿色

内网渗透--powershell简介_powershell脚本的扩展名-程序员宅基地

文章浏览阅读3.4k次。windows powershell基础Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充powershell命令和参数不区分大小写_powershell脚本的扩展名

三个闭环负反馈PID调节系统:电流环、速度环和位置环的关系_电流环速度环位置环的关系是什么-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏38次。三个闭环负反馈PID调节系统:电流环、速度环和位置环的关系伺服电机为了达到生产的精准控制,电机一般采用三环控制,这主要是为了使伺服电机系统形成闭环控制,所谓三环就是3个闭环负反馈PID调节系统。电压映射电流变化,电流映射转矩大小,转矩大小映射转速的变化,转速同时又映射了位置的变化,三环控制是考虑电气与物理融合。以达到非常精准,可靠的控制。第1环是电流环,此环完全在伺服驱动器内部进行,通过霍尔装置检测驱动器给电机的各相的输出电流,负反馈给电流的设定进行PID调节,从而达到输出电流尽量接近等于设定电流,电流_电流环速度环位置环的关系是什么

IEnumerable和IEnumerator-程序员宅基地

文章浏览阅读38次。概述IEnumerable和IEnumerator接口存在的意义:用来实现迭代的功能! public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator { object Current..._b__9_0

推荐文章

热门文章

相关标签