最近笔者需要在我的一个C#项目里添加一个滤波器功能,对一批质量不太好的现场数据进行DSP处理,我们都知道在matlab里使用fdatool,filterDesign可以很方便的设计数字滤波器,但是笔者希望的是将一个滤波器设计和使用模块融入现有的C#项目里,丰富软件的功能。
了解到一个比较好的C#数学库,Math.net : https://www.mathdotnet.com/
包含数值计算和信号处理模块:
numerical computing
Math.NET Numerics aims to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more.
signal processing
Math.NET Filtering (previously Neodym) aims to provide a toolkit for digital signal processing, offering an infrastructure for digital filter design, applying those filters to data streams using data converters, as well as digital signal generators.
下面尝试在VS中安装和使用这个包:
- 使用 NuGet 包管理器在VS中安装Math.net:
在解决方案,右键选择“管理 NuGet 程序包”,搜索Math.net,选择MathNet.Filtering,选择安装。
2. 安装好后,只需要引用命名空间就可以使用MathNet库了
using MathNet.Filtering;
3. 要了解各种滤波器函数的使用,只需要在https://filtering.mathdotnet.com/网站上找到Class Reference,进入后可以看到包含的库及使用方法了。
MathNet是一个非常强大的C#类库,有很多值得探索的功能,包括矩阵运算和数值拟合优化等等,当然也有FFT和各类滤波器等DSP工具值得探索;
给有兴趣学习的同学,分享2个youtube上的入门视频,简单易学:
这个开源项目太棒了,而且持续开发更新