查看: 219|回复: 7

[FFT] fft真实幅值与功率谱

[复制链接]
发表于 2019-5-11 08:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?我要加入

x
众所周知matlab在做fft之后取模abs之后乘2除nfft即可得到幅度谱,在求功率谱的时候是对幅度值的平方除nfft还是直接在傅里叶变化后的模值基础上取平方再乘2除nfft。
amp=fft(x(t),nfft);
real_amp=abs(amp)*2/nfft;
PSD=rea_amp.^2/nfft;
PSD1=2*abs(fft(x(t),nfft)).^2/nfft;

PSD1和PSD这两个值哪个是正确的功率谱呢??????
回复
分享到:

使用道具 举报

 楼主| 发表于 2019-5-11 08:54 | 显示全部楼层
哪位大神帮帮我啊,我已经困惑了好久了
发表于 2019-5-11 09:17 | 显示全部楼层
为啥要除nfft啊,直接平方就行了吧
 楼主| 发表于 2019-5-11 10:18 | 显示全部楼层
zhdbit 发表于 2019-5-11 09:17
为啥要除nfft啊,直接平方就行了吧

我也不清楚,帕塞瓦尔定理前面有一个1/2pi,我理解我除以N
发表于 2019-5-11 11:11 | 显示全部楼层
本帖最后由 qiaohai 于 2019-5-11 11:30 编辑

1)fft计算结果除以N得到有正负频率的数学频谱;
2)数学频谱*2得到只有正频率的物理频谱;
3)数学频谱的平方得到数学功率谱;
4)数学功率谱*2得到物理功率谱;
5)以上功率谱与随机振动里的功率谱密度差df倍,df为频率分辨率;
6)随机振动里的功率谱密度是定义在无穷域的,在有限域领域做出来的只能是谱密度估计,要得到一定精度的谱密度估计要进行至少50~100次的谱平均,像现在一次计算得到的什么功率谱,我不知道算出来有何用处,没有理论的支持。
我的意见再说清楚一点,不是随机振动信号不必求什么功率谱,没有理论支持。
发表于 2019-5-11 20:36 | 显示全部楼层
xr[ ],xr[ ]分别为FFT后的实部和虚部,NFFT为FFT点数,A[ ]为RMS幅度,P[ ]为功率,PSD[ ]为功率密度,Fs为采样频率

A[0]=sqrt(xr[0]*xr[0]+xi[0]*xi[0])/NFFT;  //FFT BIN中心频率为直流
P[0]=A[0]*A[0];
PSD[0]=P[0]/Fs*NFFT;

for(i=1;i<NFFT/2;i++)   
{
        A[i]=sqrt(2*(xr[i]*xr[i]+xi[i]*xi[i]))/NFFT;  //FFT BIN中心频率大于直流且小于奈奎斯特频率
        P[i]=A[i]*A[i];
        PSD[i]=P[i]/Fs*NFFT;
}
i=NFFT/2;
A[i]=sqrt(xr[i]*xr[i]+xi[i]*xi[i])/NFFT;  //FFT BIN中心频率=奈奎斯特频率,一般可以扔掉
P[i]=A[i]*A[i];
PSD[i]=P[i]/Fs*NFFT;
发表于 2019-5-12 14:31 | 显示全部楼层
cangcudeshu 发表于 2019-5-11 10:18
我也不清楚,帕塞瓦尔定理前面有一个1/2pi,我理解我除以N

我以前用给定的加速度功率谱密度做傅里叶逆变换模拟时域随机信号做瞬态多体分析的时候,幅值谱和自谱之间就是直接平方处理的,对时域信号求有效值和原PSD误差均在2.5%以内,方法应该是对的。。。

点评

是的。做 IFFT逆变换时不能除N,做FFT正变换时需要除N。  详情 回复 发表于 2019-5-12 19:36
发表于 2019-5-12 19:36 | 显示全部楼层
zhdbit 发表于 2019-5-12 14:31
我以前用给定的加速度功率谱密度做傅里叶逆变换模拟时域随机信号做瞬态多体分析的时候,幅值谱和自谱之间 ...

是的。做 IFFT逆变换时不能除N,做FFT正变换时需要除N。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

快速回复 返回顶部 返回列表