如在的的“更多关于”部分所示tfestimate的帮助,传递函数被计算或多或少Txy = Pyx / Pxx,所以通过分割之间的交叉谱密度y和x通过的功率谱密度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)