【发布时间】:2015-06-19 16:05:47
【问题描述】:
我正在尝试为 Matlab 频率响应函数实现 Python 等效项
[h,f] = freqz(b, 1, 512, 12.5)
在here 中描述。我目前的尝试
f, h = scipy.signal.freqz(b, 1)
没有给出预期的结果。尝试参数worN 和whole(请参阅here)似乎无法解决问题。
应该怎么做?
编辑:
Matlab 示例:
>> [h, f] = freqz(1:5, 1, 512, 12.5)
h =
15.0000 + 0.0000i
14.9976 - 0.2454i
14.9902 - 0.4907i
14.9780 - 0.7358i
14.9609 - 0.9806i
14.9389 - 1.2250i
...
f =
0
0.0122
0.0244
0.0366
0.0488
0.0610
...
Python 示例:
>>> f, h = scipy.signal.freqz(range(1,6), 1)
>>> h
array([ 15.00000000 +0.j , 14.99755288 -0.24541945j,
14.99021268 -0.49073403j, 14.97798292 -0.73583892j,
14.96086947 -0.98062944j, 14.93888050 -1.22500102j,
...])
>>> f
array([ 0. , 0.00613592, 0.01227185, 0.01840777, 0.02454369,
0.03067962, ...])
换句话说,Scipy 函数为 h 提供了良好的值,但 f 的值不匹配。
【问题讨论】:
-
你能举一个
a的例子和预期的输出吗? -
另外,您对
freqz()的使用似乎与您的链接中显示的任何使用都不匹配...
标签: python matlab numpy scipy signal-processing