matlab中filter和conv有什么区别?

问题描述 投票:16回答:2

我正在尝试计算LTI system的输出。我遇到了两个不同的Matlab函数,它们应该适用于这个工作:filterconv。他们两个有什么区别?

matlab signal-processing convolution
2个回答
13
投票

filter可以处理FIR和IIR系统,而conv需要两个输入并返回它们的卷积。所以conv(h,x)filter(h,1,x)会给出相同的结果。滤波器中的1表示滤波器的递归系数仅为[1]。但是,如果你有一个IIR过滤器,你不能使用convfilter还可以返回过滤器状态,以便它可以在后续调用中使用而不会产生过滤器瞬变。

有关详细信息,请参阅convfilter文档。


10
投票

conv(x,b)执行完整的卷积。结果的长度是length(x)+ length(b)-1filter(b,[1],x)给出的输出长度与x相同。它不会刷新过滤器的延迟线。

假设x是行向量。制作x0 = [x zeros(1,length(b)-1)];现在filter(b,[1],x0)conv(x,b)一样。这是因为额外的0用于刷新延迟线。

哪一个更合理?这取决于你需要什么!

© www.soinside.com 2019 - 2024. All rights reserved.