<p><strong>平滑图形:</strong></p>
<p>我想你真正关心的是增加分数。所以只需指定要使其看起来更平滑的点数。在</p>
<p>例如,FFT的点数与测量值相同:</p>
<pre><code>n = 500
nfft = n
t = np.linspace(0, 0.1, n)
y = 0.5 + np.sin(2*np.pi*60*t)
yf = fftshift(fft(y, nfft))
f = fftshift(fftfreq(nfft, np.mean(np.diff(t))))
pyplot.plot(f, abs(yf))
pyplot.grid()
pyplot.xlim([-100, 100])
</code></pre>
<p><a href="https://i.stack.imgur.com/soTUq.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/soTUq.png" alt="enter image description here"/></a></p>
<p>如果将fft点数改为4096,即<code>nfft=2**12</code>,则会得到一个更平滑的图。
<a href="https://i.stack.imgur.com/WrHfk.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/WrHfk.png" alt="enter image description here"/></a></p>
<p><strong>消除0 Hz的峰值</strong></p>
<p>如果DC值就是你关心的,那么就减去平均值。根据上面的示例,您可以将第5行更改为</p>
^{pr2}$
<p>你可以得到没有基带的FFT。
<a href="https://i.stack.imgur.com/1bZnL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1bZnL.png" alt="enter image description here"/></a></p>
<p><strong>最小点数</strong></p>
<p>从理论上讲,你只需要满足奈奎斯特速率。但是,对于视觉效果,FFT中的频率间隔是Fs/N。因此,如果采样率为500 Hz和500个点,则点之间的间距为1 Hz,如果带宽为5 Hz,这可能不够,所以您可以通过对信号进行零填充来增加FFT的点数,或者降低采样率(只要高于奈奎斯特)。。。在</p>