新手求助:时域信号FFT分析后幅值的变小
原时域信号为:10*sin(2pi*10*t);FFT分析后:中心频率在10Hz,但是幅值只有5.3而不是10;
问题:FFT分析后的幅值与原时域信号幅值的关系?
谢谢!
[ 本帖最后由 eight 于 2008-3-25 16:56 编辑 ] 能不能把你的代码帖出来 .
这个问题是存在的,一般来说不同的采样频率对其有一定影响,你可以变换采样频率感觉一下... ... 没有整周期采样的问题.不过那样的话,频率也是不准确的 我也遇到过这样的困扰,不知道是不是什么原因! 和采样频率有关还是和什么原因有关! 没有整周期采样,也就是信号频率不是频率分辨率的整数倍时,用FFT求得的信号频率、幅值和相位都会有误差,这时要得到准确的值,就得用频谱校正方法 分析平台:adams自带的FFT分析
测试信号:F_t*sin(2pi*f*t)
时域幅值为F_t,频域幅值为F_f;频率为f
使F_t取不同值,进行FFT变换,获得一系列F_f值,拟合二者之间的关系曲线如下:
由图可见,二者之间成线性关系,即F_f=F_t*k,其中k=0.53。
当改变输入信号的频率值f和采用不同的采样频率时,k值变化不大,也大约等于0.53。
问题:不知用其它的FFT分析时,时域幅值和频域幅值二者之间的关系系数也是0.53吗? 本人的回答仅限制在幅值的讨论,对相位的变化没有研究,希望高手讨论。
首先,确实和是否整周期采样有关,既然要求整周期当然也会和采样频率有关。
其次,由于fft得到的是双边谱,但是实际需要的只是一半(因为这两部分的结果是一样的)来作为fft结果,这样需要对这一半结果的幅值*2并/n,这个好像应该从算法和能量的角度来解释,本人没有仔细考虑,请高手详细解释。
下面是个例子,代码如下,fft后幅值是一样的。代码做了一个整周期的采样,但没有计算正确的频率值(频率值为1/n),懒得做了。^_^
function fft_demo
n = 1024;% 采样点数
A = 2;% 幅值
t = 1:n;
y = A*sin(2*pi/n*t);% 构造函数
% plot(t,y)
y_fft = abs( fft(y,n) )*2/n; % 求fft幅值
plot( y_fft( 1:n/2 ) )
发了帖后才看到这个帖子,呵呵,大家可以去看看
http://forum.vibunion.com/forum/thread-23614-1-1.html
[ 本帖最后由 toes 于 2006-8-28 22:14 编辑 ] 在整周期采样的情况下,不会出现能量的缺损,所以幅值不会变。但是如果采样的长度小于一个周期,这样会出现采样时的能量缺损,采样后又把能量在整周期上平均,自然幅值就变小了。加窗时如果窗函数的长度小于周期的长度也会出现能量的缺损,同样会出现幅值的缩小。 FFT分析,用采样长度和一个周期比较大小,“采样长度”是指时间长度,还是指采样点数?一般好像是指采样点数,这样的话,一个周期是否也得转化为时域的信号采样点数?(对这一点有点不清楚,望赐教)
如要整周期采样非常不容易,因为FFT分析时,规定采样长度为2**N。 matlab中的FFT是离散傅立叶变换(DFT),其结果就是序列的离散时间傅立叶变换(DTFT)的等间隔采样。如果分析信号频率不是落在采用频点上,FFT就不能得到准确结果。 本帖最后由 wdhd 于 2016-6-3 10:19 编辑
看楼主的问题好像是频率测得的结果就是10啊,只是幅值没有和原频率一样啊。如果是非整周期采样的问题,那应该频率和幅值都有误差才对啊?
请楼主阐明一下 我也遇到这个问题,FFT变换后,由于采样频率不准,所得的频率谱线与幅值都不是很准确,头疼中。。。。。。。。。。。。。。。。。。。。。 fft变换的实质就是吧波形分解成许多不同频率的正弦波之和。这一变换可以看做是时间函数在频率域上的表示。所以,经过复发帖变换之后,频率为10的波形复制肯定不会为10了。:@) 不错,学习了都谢谢了
页:
[1]
2