我有 python 3.4。
我发送了一个 2MHz(例如)频率并随着时间的推移接收到空化(直到我停止测量)。我想得到一个频谱图(空化与频率),更有趣的是在次谐波 (1MHz) 频率时间内的空化频谱图。
数据保存在sdataA(=空化)和t(=测量时间)
我试图在 FFTA 中保存 fft
FFTA = np.array([])
FFTA = np.fft.fft(dataA)
FFTA = np.append(FFTA, dataA)
Run Code Online (Sandbox Code Playgroud)
我得到了实数和复数然后我只取了一半(从 0 到 1MHz)并保存了实数和复数数据。
nA = int(len(FFTA)/2)
yAre = FFTA[range(nA)].real
yAim = FFTA[range(nA)].imag
Run Code Online (Sandbox Code Playgroud)
我试图通过以下方式获取频率:
FFTAfreqs = np.fft.fftfreq(len(yAre))
Run Code Online (Sandbox Code Playgroud)
但这是完全错误的(我打印了数据print (FFTAfreqs))
我还绘制了数据,但它又是错误的:
plt.plot(t, FFTA[range(n)].real, 'b-', t, FFTA[range(n)].imag, 'r--')
plt.legend(('real', 'imaginary'))
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何在次谐波 (1MHz) 频率范围内输出空化频谱图?
编辑:
数据示例:
查看“dataA”和“time”的示例:
dataA = [6.08E-04,2.78E-04,3.64E-04,3.64E-04,4.37E-04,4.09E-04,4.49E-04,4.09E-04,3.52E-04,3.24E-04,3.92E-04,3.24E-04,2.67E-04,3.24E-04,2.95E-04,2.95E-04,4.94E-04,4.09E-04,3.64E-04,3.07E-04]
time = [0.00E+00,4.96E-07,9.92E-07,1.49E-06,1.98E-06,2.48E-06,2.98E-06,3.47E-06,3.97E-06,4.46E-06,4.96E-06,5.46E-06,5.95E-06,6.45E-06,6.94E-06,7.44E-06,7.94E-06,8.43E-06,8.93E-06,9.42E-06]
Run Code Online (Sandbox Code Playgroud)
编辑二: 从@Martin 示例中,我尝试了以下代码,如果我做得对,请告诉我。
如果 dataA 和 Time 保存为 h5 文件(或我已经发布的数据)
import numpy as np
import …Run Code Online (Sandbox Code Playgroud)