【发布时间】:2023-04-06 15:52:01
【问题描述】:
此问题基于previous similar question.
我有以下等式和调整后的(一些随机数据):0.44*sin(N* 2*PI/30)
我正在尝试使用 FFT 从生成的数据中获取频率。然而,频率最终接近但不等于频率(这使得波比预期的大一点)
FFT 的最大频率为 7hz,但预期频率为 (30/2PI) 4.77hz。
我已经包含了 FFT 图表和绘制值。
我使用的代码是:
[sampleFFTValues sFreq] = positiveFFT(sampledata, 1);
sampleFFTValues = abs(sampleFFTValues);
[v sFFTV]= max(sampleFFTValues)
正 FFT 可以是found here。基本上它使 FFT 图居中并切断负信号。
我的问题是如何让 FFT 更准确,而不必仅针对频率使用最小二乘法?
【问题讨论】:
-
我认为问题在于您的预期频率(7hz)太接近您的频率下限(1hz,我假设),因此在频率维度(你将有不到三个 bits 留在那里)。我认为您需要将整个事物重新校准到一个允许很多低频域的域,例如大约 0.1 到 0.01hz。
-
一个猜测:你有没有简单地在 bin 索引上绘制频率?因为你的频率和时间绝对不匹配
-
零填充你的数据说256,以提高频率分辨率。
标签: math matlab fft octave data-fitting