我有一个csv文件,其中包含62503行和513列,每列是一个不同的位置,该列中的所有行均表示时间信号。 我需要使用imshow绘制频率波数表示。我已经直接在数据上使用了fft2,但是我什么也没得到,我不知道我是否必须编写一个循环,但是我对此并不熟悉。 你能帮我吗。 谢谢`
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.fftpack
import pylab as py
from scipy import misc, fftpack
from scipy.fftpack import fft,ifft,fft2,fftshift
df=pd.read_csv('/home/sarah/Documents/data/data7/myline2.csv', delimiter=',',header=None)
x= df.iloc[0] #the positions
y = np.linspace(0.000000016,0.000008208,513) #time vector
data=df.iloc[3:62503,0:513] # matrix of amplitudes
plt.imshow(data, aspect='auto', interpolation='none',extent=[x.min(), x.max(), y.min(), y.max()] , cmap= 'seismic') # this to plot a B-scan(amplitude plot with respect to position and time) and it works perfectly.
x,y= np.meshgrid(x, y)
plt.figure(1)
plt.savefig('my2lineshow.png')
plt.figure(2)
z=fft2(data) # i tried this to switch from the time/position domain to the frequency/wavenumber domain without actually switching the axes too.
plt.imshow(abs(z), aspect='auto', interpolation='none', cmap= 'seismic')
plt.savefig('fft2.png')
plt.show()` # it showed an empty figure!