Matlab 从FFT中提取信号频率

Matlab 从FFT中提取信号频率,matlab,diff,fft,frequency,spectrum,Matlab,Diff,Fft,Frequency,Spectrum,我不熟悉Matlab和FFT。 我需要从幅度和频率都不同的信号中提取主频。我试着去趋势,然后进行FFT以获得频率,但无法消除0Hz处的大峰值(直流分量?)。我在信号上使用了diff函数,得到的信号通过FFT处理。在这种情况下,FFT输出的峰值不在零。我比较了两条FFT曲线,似乎除了零点处的峰值外,这两条曲线显示出相似(不相同)的频谱。我想知道diff函数是否是一种有效的(并且非常有效的)去趋势化方法,或者我在这里丢失了一些信息?换句话说,对信号进行微分是否对其频率有任何影响:[code>diff

我不熟悉Matlab和FFT。
我需要从幅度和频率都不同的信号中提取主频。我试着去趋势,然后进行FFT以获得频率,但无法消除0Hz处的大峰值(直流分量?)。我在信号上使用了diff函数,得到的信号通过FFT处理。在这种情况下,FFT输出的峰值不在零。我比较了两条FFT曲线,似乎除了零点处的峰值外,这两条曲线显示出相似(不相同)的频谱。我想知道diff函数是否是一种有效的(并且非常有效的)去趋势化方法,或者我在这里丢失了一些信息?换句话说,对信号进行微分是否对其频率有任何影响:[code>diff(sin(omega.t))=cos(omega.t)-频率没有变化]


非常感谢

通过区分信号,您实际上应用了一种高通滤波器,一种不太智能的高通滤波器,它会破坏您的信号。相反,您可以尝试其他一些过滤器,例如:

b=fir1(32,2*0.01/fs,'high');
a=1;
FilteredX=filtfilt(x,a,b)
其中:

x是你的原始信号

FilteredX是经过滤波的信号

fs-您的采样频率


通过这种方式,你可以过滤掉任何低于0.01的频率,并且几乎不会损害频谱的其余部分,从而让你可以根据自己的意愿检测峰值。

通过区分信号,你实际上应用了一种高通滤波器,一种不太智能的高通滤波器,它会破坏你的信号。相反,您可以尝试其他一些过滤器,例如:

b=fir1(32,2*0.01/fs,'high');
a=1;
FilteredX=filtfilt(x,a,b)
其中:

x是你的原始信号

FilteredX是经过滤波的信号

fs-您的采样频率


通过这种方式,您将过滤掉任何低于0.01的频率,并且几乎不会损害频谱的其余部分,从而允许您根据需要检测峰值。

信号的离散傅里叶变换
X

如果我们把你得到的信号的第一个差值

Sum[ exp(2*pi*i*k*n/N) * (x(n) - x(n-1)) ]
你可以重新安排给我

(1 - exp(2*pi*i*k/N)) * Sum[ exp(2*pi*i*k*n/N) * x(n) ]
i、 它是原始傅里叶变换的倍数。在
k=0
情况下(即零频率分量),乘法器为零,这解释了为什么这会消除
k=0
处的峰值

但是请注意,乘法器取决于
k
的值,因此您不会得到相同的信号-您不能仅通过第一个差分来消除尖峰。将与连续傅里叶变换进行比较,其中,如果g=F(F)和h=F(df/dx),则


i、 e.导数的傅里叶变换是原始函数的傅里叶变换,乘以ik。

信号的离散傅里叶变换
X
由以下公式定义(按比例)

如果我们把你得到的信号的第一个差值

Sum[ exp(2*pi*i*k*n/N) * (x(n) - x(n-1)) ]
你可以重新安排给我

(1 - exp(2*pi*i*k/N)) * Sum[ exp(2*pi*i*k*n/N) * x(n) ]
i、 它是原始傅里叶变换的倍数。在
k=0
情况下(即零频率分量),乘法器为零,这解释了为什么这会消除
k=0
处的峰值

但是请注意,乘法器取决于
k
的值,因此您不会得到相同的信号-您不能仅通过第一个差分来消除尖峰。将与连续傅里叶变换进行比较,其中,如果g=F(F)和h=F(df/dx),则


i、 e.导数的傅里叶变换是原始函数的傅里叶变换,乘以ik。

我猜你是在区分信号,因为当你区分任何函数时,常数或0Hz分量消失。还要考虑到FFT不是理想的傅里叶变换(但它是使用的),因此频谱可能会略有不同。我猜你区分信号是因为当你区分任何函数时,常数或0Hz分量会消失。还要考虑到FFT不是理想的傅里叶变换(但它是使用的傅里叶变换),因此频谱可能会略有不同。好答案,+1。另外,值得注意的是,由于傅里叶分量乘以
ik
,相应的功率谱分量按系数
k^2
缩放。因此,当取第一个差分时,你是在降低低频信号方差的比例,而在高频信号方差的比例增加。如果你有高频噪音,这是一件坏事;如果你大部分都是低频噪音,这是一件好事。好答案,+1。另外,值得注意的是,由于傅里叶分量乘以
ik
,相应的功率谱分量按系数
k^2
缩放。因此,当取第一个差分时,你是在降低低频信号方差的比例,而在高频信号方差的比例增加。如果你有高频噪音,这是一件坏事;如果你有大部分低频噪声,这是一件好事。