声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3134|回复: 10

[FFT] 请教关于FFT变换后能量谱幅度值问题

[复制链接]
发表于 2009-6-2 15:23 | 显示全部楼层 |阅读模式

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

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

x
今天用三个幅度值相同的不同频率的正弦波,合成了一个信号,对该信号进行FFT变换后,求其能量谱,为什么得到的信号能量幅度值不同呢?
程序如下:
clc;
clear;
t=0:0.001:1;
f1=25;
f2=105;
f3=205;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
fx=abs(fft(x,1024));
plot(fx);

请高手赐教,谢谢了~

程序运行结果

程序运行结果
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-6-2 15:33 | 显示全部楼层
刚刚将FFT点数改为2048后,这种现象就几乎消失了,是因为FFT点数少的原因吗?
未命名1.GIF
发表于 2009-6-2 16:41 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-19 11:16 编辑
原帖由 lixiaoming_eric 于 2009-6-2 15:33 发表
刚刚将FFT点数改为2048后,这种现象就几乎消失了,是因为FFT点数少的原因吗?

fx=abs(fft(x,1024))*2/1024;
发表于 2009-6-2 18:16 | 显示全部楼层
除楼上说的, 尚有频域在f1/f2/f3上刚好无点, 时域点数不足补零!
clc; clear;
t=0:0.001:3; f1=25; f2=105; f3=205;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
nn=1024; fx=abs(fft(x,nn))*2/nn; ff=[0:1000/nn:1000-1000/nn];
plot(ff,fx,'o-'); grid on;

评分

1

查看全部评分

 楼主| 发表于 2009-6-3 09:15 | 显示全部楼层
谢谢回复~明白了,嘿嘿,感谢~
发表于 2009-6-4 09:46 | 显示全部楼层

回复 板凳 yelv123 的帖子

fx=abs(fft(x,1024))*2/1024
这是不是求功率谱了
lz要的是能量谱啊
发表于 2009-6-4 09:54 | 显示全部楼层

回复 楼主 lixiaoming_eric 的帖子

能量谱是在w+dw之间信号能量的分布,幅值不一样就对了吧
t=0:0.001:1;
f1=25; sin(2*pi*t*f1)+
f2=105; sin(2*pi*t*f1)
f3=205; sin(2*pi*t*f2)+sin(2*pi*t*f3)
三个信号的能量是不一样的吧
求出在f1 f2 f3能量谱幅值应该不同

评分

1

查看全部评分

发表于 2009-6-4 18:28 | 显示全部楼层
说真的, 一直不清楚功率谱/能量谱的明确定义!
的确正弦信号若以psd(power spectrum density)表示频谱, 会因使用fft长度不同, 其值会有所差异!
但若画在同一张(使用相同fft长度), 其值也应该相当! 除非有4F的问题!
发表于 2009-6-4 21:45 | 显示全部楼层
自己有点想当然了
的确如chaching所说的,尚有频域在f1/f2/f3上刚好无点,

我想解释一下,还望指正,
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3)相当于三个正弦信号(无限长)乘以了一个矩形窗,然后做傅里叶变换,
也就是在25 105 205处的三个sinc函数的相加,那么sinc函数的旁瓣也就是等于零的点的间距为2*pi/T(T为矩形窗的长度,本例中为1),即间距为2*pi,转化为赫兹就是1赫兹,f1 f2 f3两两之间的距离为80和100均为1的倍数,所以叠加后在三个频率处的幅值相等,
在采样,周期延拓就形成了fft,则在三个频率出的幅度值相等,若将f3改为205.5,再试试
clc;
clear;
t=0:0.001:1-0.001;
f1=25;
f2=105;
f3=205.5;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
fx=abs(fft(x,1000));
plot(fx);

一家之言,望高手们指教

评分

1

查看全部评分

发表于 2009-7-1 16:04 | 显示全部楼层
楼主的频率分辨力是1000/1001,约等于0.999Hz,这样不管是基频的多少倍也不能与25,105,205重合,将采样点数改为1000后,频率分辨力为1,这样就能与25,105,205重合,就可以看到它们的幅值都为1.
程序为:
clc;
clear;
t=0.001:0.001:1;
f1=25;
f2=105;
f3=205;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3);
fx=abs(fft(x))*2/length(t);
fx=fx(1:501);
f_tem=linspace(0,500,501);
plot(f_tem,fx);
amplitude.jpg

评分

1

查看全部评分

发表于 2009-8-5 19:28 | 显示全部楼层
楼上的图中幅值怎么是1???不是0.25吗?

[ 本帖最后由 please 于 2009-8-5 19:31 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 21:24 , Processed in 0.066284 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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