C#中的简单信号处理
我正在采样一个真实世界的传感器,我需要显示其过滤值.信号以10 Hz的速率采样,在此期间它可以上升到最大范围的80%.
之前我曾使用均方根作为过滤器,并将其应用于我记录的最后五个值.对于这个应用程序,这不会很好,因为我不存储未更改的值.换句话说,我需要在我的过滤器中考虑时间…… 我在DSP Guide读过,但是我没有得到太多的帮助.是否有专门针对程序员的教程,而不是Mathcad工程师?是否有一些简单的代码片段可以提供帮助? 更新:经过多次电子表格测试后,我已采取行政决定记录所有样本,并申请Butterworth filter. 解决方法
你总是需要存储一些值(但不一定
所有输入值).滤波器的电流输出取决于a 输入值的数量以及可能的某些过去的输出值. 最简单的滤波器将是一阶巴特沃斯低通滤波器 y(n)= x(n) – a1 * y(n-1) 其中x(n)是当前输入,y(n-1)是前一个 在代码中(主要是C#): double a1 = 0.57; //0.57 is just an example value. double lastY = 0.0; while (true) { double x = <get an input value>; double y = x - a1 * lastY; <Use y somehow> lastY = y; } 一阶过滤器是否足够取决于您的 对于更高阶的滤波器,必须存储更多的值并且代码变得有点复杂.平时值需要在数组中向下移动;在数组中过去的y值和过去的x值的数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |