怎样写数字滤波程序?

怎样写数字滤波程序?,第1张

可以告诉你方法:算数平均滤波,就是求出k次采样值的总和,再除以k;中值滤波法,是把k个采样值按照从小到大排列顺序,然后找到位于最中间的那个值;最后一种不知道你们老师的防脉冲是什么意思,猜测可能是去掉k次采样值中大于或小于某个值,剩余值求平均数。

让别人免费给你写程序基本上不可能,这个得花时间和精力。

plc有信号闪烁怎么做滤波?本次分享程序为采样时间可自定义的滤波程序,原理如下

按自定义周期采集一个值,采集十个值后去除最大值和最小值,得到平均值并输出

以博途为例

首先,新建一个FB功能

新建FB功能块

打开你的块后建立如下变量表

现在开始编程

第一步,初始化SUM(求和值)和SUM_f_D(去除最大最小值后的值)第二步,采集值压进堆栈,这里我用move指令模拟了一个堆栈程序

第三步,用MAX指令找出最大值

第四步,用MIN指令找出最小值

第五步,求和后减去最大和最小值

最后一步,输出滤波值

这是一个FB功能块接下来在程序里调用它

这是现场供水管温度波动大,加入滤波块后稳定运行

这里的比较值10就是说10s采集一个值,你可以根据现场实际修改它,包括1s脉冲也可以自定义

这个程序是我们公司这几年一直在用的一个功能块,分享给有需要的各位,请转发点赞支持一下,码字不易,祝各位事业有成!后面还会分享这几年一直在用得好的功能块

如果需要原程序的,可以在下方留言,如果对程序有疑问也可以留言,谢谢!

[B,A]=butter(7,0.596,'s')

% 巴特沃兹低通滤波器级数7,截止频率0.596

[num,den]=impinvar(B,A,1)

% 转为数字滤波,采样频率1HZ

[h,w]=freqz(num,den,512)

% 计算频率响应,用512采样值计算

plot(w/pi,20*log10(abs(h)))grid

axis([0 1 -60 5])

xlabel('\omega/\pi')ylabel('Gain,in dB')

title('Gain response')

% 画出频率响应曲线,横轴频率,单位赫兹,纵轴幅值,单位分贝


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11725357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存