如何绘制这个周期序列的傅里叶变换?
How to plot the fourier transform of this period sequence?
我有周期序列 1、2、4、8、16、32、29、23、11、22、9、18、1、2 的 64 个值,...我计算它的傅里叶变换使用
from scipy import fft, ifft
x = [(2**i) % 35 for i in range(64)]
y = fft(x)
您能否举例说明如何绘制这些 y 值以便我查看尖峰?我只想绘制 64 个值,不多于此。我自己建造地块还需要什么?
Matplotlib 是最简单且使用最广泛的 Python 绘图模块之一。
如果你有 x 和 y 作为 2 个列表,对应于 x 和 y 坐标,那么你可以这样做:
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
您的代码似乎已经生成了 64 个值,如您所愿。
通过运行你的代码并绘制相应的图形,得到:
如果您希望实际连接这些点,则可以使用 plt.plot(x,y)
代替 plt.scatter(x,y)
,但只有当您的 x 和 y 坐标按升序排列时才有效。下面是一些允许这样做的代码:
from scipy import fft, ifft
x = [(2**i) % 35 for i in range(64)]
y = fft(x)
y = [n for _,n in sorted(zip(x,y))]
x.sort()
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()
生成下图:
我有周期序列 1、2、4、8、16、32、29、23、11、22、9、18、1、2 的 64 个值,...我计算它的傅里叶变换使用
from scipy import fft, ifft
x = [(2**i) % 35 for i in range(64)]
y = fft(x)
您能否举例说明如何绘制这些 y 值以便我查看尖峰?我只想绘制 64 个值,不多于此。我自己建造地块还需要什么?
Matplotlib 是最简单且使用最广泛的 Python 绘图模块之一。
如果你有 x 和 y 作为 2 个列表,对应于 x 和 y 坐标,那么你可以这样做:
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
您的代码似乎已经生成了 64 个值,如您所愿。
通过运行你的代码并绘制相应的图形,得到:
如果您希望实际连接这些点,则可以使用 plt.plot(x,y)
代替 plt.scatter(x,y)
,但只有当您的 x 和 y 坐标按升序排列时才有效。下面是一些允许这样做的代码:
from scipy import fft, ifft
x = [(2**i) % 35 for i in range(64)]
y = fft(x)
y = [n for _,n in sorted(zip(x,y))]
x.sort()
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.show()
生成下图: