filtfilt returns unexpected large value when using with LPC

2 views (last 30 days)
Hi, I am just trying source-filter separation with lpc function and filtfilt function. However, when the signal pass through filtfilt, it becomes extremely large. When I use filter instead of filtfilt, there is no problem with it.
Is there any problems in my code?
a = lpc(source,50);
e = source - filtfilt([0 -a(2:end)],1,source);
recovered = filtfilt(1,a,e); % this filtfilt makes the problem

Answers (1)

Zhao Wang
Zhao Wang on 29 Sep 2016
I understand that you want to use the "filtfilt" function in source-filter separation. After using the "filtfilt" function, the amplitude of the filtered signal becomes large.
This increase in signal amplitude may be caused by how the "filtfilt" function processes the signal. The "filtfilt" function performs zero-phase digital filtering by processing the input signal in both the forward and reverse directions. This processing mechanism leads to a filter transfer function that equals the squared magnitude of the original filter transfer function. Because of this property, the output signal may be larger than the output of the "filter" function with the same filter design.
For more details about the "filtfilt" function, refer to the following link:
You can also refer to the 'Zero-Phase Filtering' section in the following link for another example of using the "filtfilt" function:
If you have any further question, you can contact MathWorks Technical Support for assistance.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!