如何使用 scipy 库在 fft 中绘制实部和虚部的图?

问题描述

我有以下代码,我从互联网上获取它,我正在尝试逐行理解然后改进它。除了一部分,我都明白了。 当我们绘制频率图时,为什么我们取 N//2 作为向量的长度? 当我将其更改为 N 时,它给了我错误

ValueError: x 和 y 必须具有相同的第一维,但具有形状 (600,) 和 (300,)

import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt

N = 600 
sample_frequency = 800 
T = 1.0 / sample_frequency

x = np.linspace(0.0,N*T,N)



y = np.sin(10.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x) 


yf = fft(y)


xf = np.linspace(0.0,1.0/(2.0*T),N//2)

plt.figure(1)
plt.subplot(211)
plt.plot(x,y)
plt.grid()

plt.subplot(212)
plt.plot(xf,2.0/N * np.abs(yf[0:N//2]))
plt.grid()


plt.show()

另外我想做的另一件事是为虚部和实部分别绘制一个图表,除了它们的绝对值。我尝试了不同的方法,但我得到了一些错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)