假设我有一个平滑的函数(表示为向量):
<div>
我希望找到它的周期性 - pi(甚至它的频率-2)。 我尝试过以下方法:
x=0:0.1:1000;
y=sin(2*x);
但显然它不起作用(情节不会给我一个“2”的峰值)。
请您帮我找到找到值“2”的方法吗?
提前致谢
答案 0 :(得分:2)
这里有几个问题:
当您的实际信号为fft
x
y
x
应该是弧度
您需要定义采样率并使用它来确定沿x轴的频率值
因此,一旦我们纠正了所有这些事情,我们就会得到:
samplingRate = 1000; % Samples per period
nPeriods = 10;
nSamples = samplingRate * nPeriods;
x = linspace(0, 2*pi*nPeriods, nSamples);
y = sin(2*x);
F = fft(y);
amplitude = abs(F / nSamples);
f = samplingRate / nSamples*[0:(nSamples/2-1),-nSamples/2:-1];
plot(f, amplitude)
答案 1 :(得分:1)
通常,您不能单独使用FFT来查找周期信号的周期。这是因为FFT进行正弦基分解(或基变换),并且可以重复许多非正弦波形(看起来绝对不像正弦波或单个正弦基矢量的信号)以形成周期函数,波形或信号。因此,很可能在FFT结果中根本不显示周期函数或波形的频率(它被称为缺失的基本问题)。
只有在接近或接近正弦信号的情况下,FFT才能可靠地报告该周期函数周期的倒数。
有很多音高检测/估算算法。您可以使用FFT作为某些复合方法的子组件,包括倒谱或倒谱分析,以及谐波产品谱间距检测方法。