我正在尝试使用此代码在导入的csv中绘制类似于Matplotlib Gallery的连贯图:
r1 = mru['r1']
r2 = mru['r2']
t = mru['time']
plt.cohere(t, r1, 'b-', t, r2, 'g-', ax=ax10)
ax10.xlim(0,5)
ax10.xlabel('time')
ax10.ylabel('r1 and r2')
ax10.grid(True)
我收到此错误:
ValueError: Coherence is calculated by averaging over *NFFT*
length segments. Your signal is too short for your choice of *NFFT*
所以我将值改为2:
plt.cohere(t, r1, 'b-', t, r2, 'g-', NFFT=2, ax=ax10)
得到此错误:
TypeError: cohere() got multiple values for keyword argument 'NFFT'
如何正确绘制相关性?
答案 0 :(得分:1)
您传递给cohere()
的参数是错误的。您不需要时间,只需要两个系列r1
和r2
,以及常见的采样率Fs
。
您将收到原始错误消息,因为根据文档(http://matplotlib.org/api/mlab_api.html#matplotlib.mlab.cohere),函数期望NFFT成为第3个参数,并且它以某种方式将'b-'
解释为数字。当你在其他地方明确定义NFFT时,你就会加倍研究NFFT的定义。
尝试
plt.cohere(r1, r2, NFFT=256)
或者您需要的任何NFFT值。确保你的采样率也正确,否则你的结果将没有实际意义。