matlab impz和scipy impulse2的区别是什么?

jchrr9hc  于 2022-11-09  发布在  Matlab
关注(0)|答案(1)|浏览(559)

我正在用python中的过滤器做一些测试。已经在matlab中做过了。当这样做的时候,我在matlab中使用impz和python中使用scipy.signal.impulse2时,对同一个过滤器得到不同的结果。Matlab impz:这是python实现的结果。为了得到相同的结果,我在matlab和python中都使用了这个过滤器系数。

b = np.array([0.0335718093676408, 0, -0.0671436187352817, 0, 0.0335718093676408])
a = np.array([1,-1.74768237925094,2.19561759706246,-1.29097205253115,0.553269889688682])

这样做的matlab代码是(这也会在matlab livescript中创建图):

impz(b,a)

我使用的python代码如下:

T, yout = scipy.signal.impulse2((b,a))

和绘图:

plt.plot(T, yout)

我在文档中找不到任何说明这些应该表现得如此不同的内容

62lalag4

62lalag41#

impzimpulse2不是同一个函数。impz处理的是离散时间系统,而impulse2处理的是连续时间系统,impz的等价函数实际上是dt为1的dimpulse

import numpy as np
import scipy.signal
import matplotlib.pyplot as plt

b = np.array([0.0335718093676408, 0, -0.0671436187352817, 0, 0.0335718093676408])
a = np.array([1,-1.74768237925094,2.19561759706246,-1.29097205253115,0.553269889688682])

T, yout = scipy.signal.dimpulse(system=(b,a,1))

plt.stem(T.flatten(), yout[0].flatten())
plt.show()

相关问题