紧接上一篇,简单分析matlab中的非常好用的 filtfilt 函数,一款零相移滤波函数。
其matlab中的语法如下:
y = filtfilt(data,x);
1
非常简单,不是一般的简单!然而,其他语言中,不能用!。。。所以只能深扒matlab代码。。。
y = filter(b(:,ii),a(:,ii),y,zi(:,ii)*y(1));
y = y(end:-1:1);
y = filter(b(:,ii),a(:,ii),y,zi(:,ii)*y(1));
y = y(end-nfact:-1:nfact+1);
1
2
3
4
意思即: 滤波–翻转–再滤波–再翻转
所以在c语言的编写中,只要写好了滤波函数,加之以上的整个过程,即可实现此零相移滤波函数。
另外,在matlab中的filtfilt函数中,对原始信号进行了一次拼接
————————————————
版权声明:本文为CSDN博主「yuchendai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010856402/article/details/79296531