我有一个简单的一维数组,比如[0,0,0,0,0,1,1,1,1,1,0,0,0,0,0]
,它描述了一个平方脉冲。我想把这个脉冲转换成频域,然后用下面的代码画出它的幅度谱(我是从OpenCV Python Tutorials得到的):
squareimpulse = np.array([0,0,0,0,0,1,1,1,1,1,0,0,0,0,0])
img = (squareimpulse)
f = np.fft.fft(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))
plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
该脚本适用于使用f = np.fft.fft2(img)
的二维数组,但对于我只有一个维度的情况则不适用。在
希望我们能解决这个问题。在
好吧,说真的,
imshow
函数不接受值列表。见http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow我将
plt.imshow(.....)
改为plt.plot(.....)
,脚本现在正在工作!在相关问题 更多 >
编程相关推荐