作者cyBochu (drinktea)
看板C_and_CPP
标题[问题] 如何用C语言写低通滤波器
时间Sun May 3 15:41:42 2020
各位好
请问如何用C语言写一个一阶低通滤波器的程式
目前我了解到一阶低通滤波器算法 Y(n) = aX(n)+(1-a)Y(n-1)
其中 a:滤波系数 X(n):本次采样值 Y(n-1):上次滤波输出值 Y(n):本次滤波值
然後也参考了网路上别人写的code 但是看不懂到底是怎麽算的
参考网址如下:
https://blog.csdn.net/kilotwo/article/details/78794450
请各位大大们解惑了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.165.134.238 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1588491709.A.36B.html
1F:推 Schottky: 先说说你想干嘛,看你找来的范例不像要做讯号处理 05/03 16:02
2F:→ Schottky: 既然不是讯号处理那你究竟要什麽,定义清楚才能讨论 05/03 16:02
3F:→ Schottky: 如果你真的是要做讯号处理,FFT 转 freqency domain, 05/03 16:04
4F:→ Schottky: 切掉不要的频率再转回 time domain 即可。 05/03 16:04
5F:→ Schottky: 这样你要高通、低通、带通、甚至等化器效果都一次搞定 05/03 16:05
6F:→ Lipraxde: 先学好线性系统 05/03 16:06
7F:推 alan23273850: why not MATLAB? uh? 05/03 16:14
8F:推 HSUFIT: 他的范例设计上直接跑在一个处理器,他假设这个处理器厂商 05/03 21:08
9F:→ HSUFIT: 提供了API可以读到当前的输入数值,所以你看到的读取其实 05/03 21:08
10F:→ HSUFIT: 都是在做「采样点」,这个范例也都是在时域做操作,所以把 05/03 21:08
11F:→ HSUFIT: 他做的事排一排其实就很好理解了 05/03 21:08
12F:推 HSUFIT: 算术平均率波和滑动率波其实很类似,可以对照着看,两者差 05/03 21:24
13F:→ HSUFIT: 别在於平均只取当下这次的平均,而滑动的delay会写在函式 05/03 21:24
14F:→ HSUFIT: 外面,是针对连续取值的变化型 05/03 21:24
15F:→ HSUFIT: 这份是比较偏实战型的code,要拿来交作业的话要自己转换一 05/03 21:38
16F:→ HSUFIT: 下思维,毕竟实体机器没有可以看到所有采样点的上帝视角, 05/03 21:38
17F:→ HSUFIT: 只能在连续时间下读adc的值再delay一个点一个点拿罗 05/03 21:38
18F:推 qscgy4: 这公式没什麽难的吧,很常见的滤波原理 a介於 0~1.0之间 05/04 09:01
19F:→ qscgy4: 假设你可以读到某个ADC值,又希望数值不要太random 05/04 09:02
20F:→ qscgy4: 那你就可以写一个简单的公式 例如: 05/04 09:03
21F:→ qscgy4: 新的ADC = 这次ADC x 0.9 + 上次ADC x 0.1 05/04 09:04
22F:→ qscgy4: 以上式为例 a = 0.9,ADC = a*current_ADC+(1-a)old_ADC 05/04 09:06
23F:→ qscgy4: 这也没什麽好解释的 就稍微自己看一下吧,另外要注意 05/04 09:07
24F:→ qscgy4: 这种写法最造成讯号延迟 05/04 09:07
25F:→ qscgy4: 会 05/04 09:08
26F:→ Lipraxde: 没延迟的低通滤波器要怎麽写?零相移的我倒是会一点 05/04 12:36
27F:推 qscgy4: 我比较好奇怎麽实现real time 零相移滤波器 05/04 13:52
28F:推 w0005151: zero phase shift怎麽实现的?理论上很小但不为0不是吗 05/04 15:32
29F:→ Lipraxde: 要 real time 的话我只会线性相移的,很抱歉 05/04 17:51
30F:→ yoyololicon: FIR/IIR的差别和应用 了解一下 就会懂推文在说什麽 05/04 18:52
31F:→ yoyololicon: 了 05/04 18:52
32F:→ yoyololicon: realtime zero phase shift写出来应该能拿诺贝尔奖 05/04 18:54
33F:→ yoyololicon: 吧 05/04 18:54