Hi, my first idea is that the signal is not padded with zeroes, but mirrored (as is used in 2D convolution). Because as i understand filtfilt, you are doing all as it should be.
Implementing FILTFILT using FILTER
4 次查看(过去 30 天)
显示 更早的评论
Hello fellow Matlab users,
I am trying to understand how FILTFILT.m works & am trying to implement it using FILTER.m. To my understanding:
1. It uses reflected signal extension at the edges (left and right side of original signal).
2. Length of each reflected extension is 3*(filter_order-1).
3. Signal is filtered in forward direction.
4. Then filtered signal from 3 is filtered in backward direction.
5. Finally, filtered output from 4 (after flipping the filtered signal) corresponding to original signal length is chosen as output.
I have implemented the above in 2 m-files. One is a function I wrote (my_filtfilt.m) and the other one (compare_matlab_filtfilt_my_filtfilt.m) calls this function and Matlab filtfilt.m for comparison.
While results are close for a noisy Matlab sample ECG signal (>> load noisysignals x), they are not EXACTLY identical (see attached image/plot)!
Also attached are my m-files.
How to make the 2 outputs to match perfectly?
Any help would be greatly appreciated :)
Thanks!
Saif
0 个评论
回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Digital Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!