Python版的Matlab Signal Toolbox的tfestimate()?

时间:2015-02-11 18:50:12

标签: python matlab numpy scipy

是否存在Python版本的Matlab的tfestimate()?我查看了控件工具箱,但它只提供了线性传递函数。

1 个答案:

答案 0 :(得分:5)

如'更多关于' help of tfestimate的一部分,传递函数或多或少地计算为Txy = Pyx / Pxx,因此将yx之间的交叉谱密度除以功率谱 - x的密度。请注意,为了计算交叉谱密度,参数的顺序很重要,因为Pyx被计算(在适当的窗口化和归一化之后)作为各个窗口上fft(y) * conj(fft(x))的平均值。同样,PSD Pxx计算为平均值fft(x) * conj(fft(x))。我忘记了原因,但有充分理由将其计算为这两个平均值之间的比率,而不是直接平均fft(y) / fft(x)

cpsd和psd都在matplotlib.mlab中可用,因此您可以或多或少地计算传输函数(未经测试):

from matplotlib.mlab import psd, csd

def tfe(x, y, *args, **kwargs):
   """estimate transfer function from x to y, see csd for calling convention"""
   return csd(y, x, *args, **kwargs) / psd(x, *args, **kwargs)