我在matlab中有一个信号,以及如何计算特定波段的瞬时相位。我想将信号滤波到这个范围(使用带通滤波器),然后得到瞬时相位。我知道使用一些具有非线性相位响应的滤波器存在问题,有什么方法可以解决这个问题吗?我在网上找到了一些关于对信号进行反向滤波的信息,但它仍然有点不清楚。我想避免使用小波(它们可能在这里过度杀伤)。感谢。
答案 0 :(得分:1)
除非您使用非常规技巧(例如nibot评论中建议的filtfilt
),否则总是会出现相位失真。具有延迟D的线性相位FIR将增加2 * pi * f * D的相位,而非线性相位IIR将增加非线性地依赖于f的相位。
在这两种情况下,很容易计算相位失真(例如,对IIR使用freqz(num, den)
)并在解释结果测量时考虑到这种失真。当然,当相位在您感兴趣的频率范围内发生显着变化时,您将获得毫无意义的结果 - 但这是一个不同的问题。