MATLAB Answers

0

filtfilt returns unexpected large value when using with LPC

Asked by Sangeon Yong on 27 Sep 2016
Latest activity Answered by Zhao Wang on 29 Sep 2016
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

  0 Comments

Sign in to comment.

1 Answer

Answer by 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.

  0 Comments

Sign in to comment.