兴八达 发表于 2017-4-10 21:28

在FFT分析结果上如何准确提取特定频率成分的幅值和相位??

想提取一组数据(2048个点,采样频率640)的频率成分的幅值及相位信息通过软件计算得到2.5Hz频率成分的幅值时130,相位是14,但是自己编的程序算的相位总是不对,
求大神指导!!!!!!!!
load shuju%数据需要自己定义一下
N=2048;
data=shju;
datasjfz=datasj-mean(datasj);%每个通道的峰值
y=datasjfz;
L=length(y);
NFFT=2^nextpow2(L);

Y = fft(y, NFFT)/L;
Y = 2*abs(Y(1:NFFT/2+1));
f = fs/2*linspace(0, 1, NFFT/2+1);
figure
plot(f,Y)
P=angle(Y(9))*180/pi;%按照频率分辨率0.31计算第九个点相位; %不知道怎么求2.5Hz的幅值相位求大神指导{:3_50:}


Triste 发表于 2017-4-11 08:51

这图没毛病吧?

TestGuru 发表于 2017-4-11 11:29

图应该对的,不过2.5Hz处的相位我算出来是-26.93度

hcharlie 发表于 2017-4-11 17:11

本帖最后由 hcharlie 于 2017-4-12 08:16 编辑

相位有这么重要吗?
求相位需要有相对基准,也就是说与开始测量的参照点,起始点有关,它自己无所谓相位。
还有一个问题就是,FFT以后的频率是离散化了,如果你的信号的实际频率和FFT第几条谱线的频率不严格相等,幅值的误差不大,但相位就不好说了,两个不同频率信号之间是没有相位的概念的。

momoLee 发表于 2018-7-19 09:56

TestGuru 发表于 2017-4-11 11:29
图应该对的,不过2.5Hz处的相位我算出来是-26.93度

这个是怎么算的?

TestGuru 发表于 2018-8-13 11:45

FFT的结果的实部和虚部含有相位信息

兴八达 发表于 2019-2-23 11:50

TestGuru 发表于 2017-4-11 11:29
图应该对的,不过2.5Hz处的相位我算出来是-26.93度

赞!交流一下,至于旋转机械用FFT算出来的相位,需要相位矫正嘛

qiaohai 发表于 2019-3-1 10:39

使用FFT时应注意点:
FFT是离散傅里叶变换,它和傅里叶变换是有区别的。
“傅里叶变换得到频谱图”,这句话是不对的,因为(无穷域)傅里叶变换对被变换函数是有严格要求的,非常遗憾,一般我们概念中的振动信号都不具备傅里叶变换的条件!故而在随机信号理论中不得已用了谱密度的概念而转弯抹角用自相关的傅里叶变换来定义,一点也直接看不出它和频谱有什么关联。
再说FFT或DFT,是离散傅里叶变换,一组离散数据FFT得到另一组离散数据,这是数学表示,它基本不需要什么条件都能得到结果。
但是FFT的结果是不是“等于”振动振幅,却是对信号是有条件的,满足这样的条件就“等于”,不满足条件就“不等于”,或者只能说“近似等于”。
什么条件?也就是这些数据必须是一个周期函数的整数个周期的样本,如果不是,则它自动认为是以这一组样本无限重复组成的周期函数变换的结果。
如果是整数周期样本,在这些个频率点上数据可以精确的表示振动的振幅和相位,而在这些点之间的频率上都等于零。
如果非整数周期采样,则好比在无穷样本上加窗,由于有所谓的功率泄漏,在这些点上只能“近似”表示振幅和相位。两个相邻频率点之间的频率上得到信号,这才通常用简单插值方法“估计”出其振幅。
----------------------------------------------------------------------------------------------------
以上是我在本论坛另一处的论述,请阅读参考。
结合此处,先说振幅。建议将采集频率修改到512Hz,2048点,频率分辨率0.25,第10谱线就是2.5Hz。
要求得相位还必须知道起始点,建议按你的参照时刻开始采集,开始时刻不明确,求出的相位没有意义。或者同时记录下你的参考同频率信号,也求出相位好做比较。


页: [1]
查看完整版本: 在FFT分析结果上如何准确提取特定频率成分的幅值和相位??