gpt4 book ai didi

python - Numpy FFT 几秒钟

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:06 25 4
gpt4 key购买 nike

我试图了解 python 中的 fft 是如何工作的(或一般情况)。
当我记录了几秒钟的信号时,我只能显示该 FFT 的一秒钟。
有没有办法获取所有数据并求平均值?我之前在 LabView 中做过这个。有人可以帮忙吗?

这是我正在使用的示例代码。

from numpy import linspace, sin, pi, log10, average, arange
from matplotlib.pyplot import plot, show, figure
from numpy.fft import fft, fftfreq

N = 1000 * 60 * 4
dt = 1 / 1000
x = linspace(0, N*dt, N)
freq = linspace(10, 200, N)
sinsweep = sin(x*freq)
mavg = [average(sinsweep[i*60:(i+1)*60]) for i in range(int(N/60))]
plot(freq, sinsweep, '.')
plot(linspace(10, 200, int(N/60)), mavg, '.')

f = figure()
t = arange(60)
sp = fft(mavg, n=60)
freq = fftfreq(t.shape[-1])
plot(sp.imag)
show()

plot data fft

最佳答案

我对您的代码进行了一些修改,以获得漂亮的频谱。首先,我增加点数来验证香农准则。还有一些技巧
提高速度。

from numpy import linspace, sin, pi, log10, average, arange
from matplotlib.pyplot import plot, show, figure
from numpy.fft import fft, fftfreq
close()
N = 10000 * 60 * 4
dt = 1 / 10000
t = arange(0, N*dt, dt)
freq = linspace(10, 200, N)
sinsweep = sin(t*freq)
mavg = sinsweep.reshape(-1,60).mean(1)
tm=t[::60]
figure('signal')
plot(tm, mavg)
sp = fft(mavg)
freq = fftfreq(tm.size,dt*60)
valid=freq>0
figure('spectrum')
plot(freq[valid],abs(sp[valid]))
show()

对于enter image description here

这是你所期望的吗?

关于python - Numpy FFT 几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42368383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com