声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2082|回复: 4

[FFT] 信号的傅里叶变换结果与理论结果对不上

[复制链接]
发表于 2012-9-25 17:24 | 显示全部楼层 |阅读模式
10体能
一个信号分两段如下
ESF(x)=exp(-10*x)     x>=0时
ESF(x)=2-exp(10*x)   x<0 时

对这个信号进行傅里叶变换而后取模,理论上应该得到的结果是
MTF(f)=100/(100+(2*pi*f)^2); %pi是圆周率, f是频率

但是我怎么也对不上这两个的结果。请教高手

最佳答案

查看完整内容

我觉得是FFT的关系,快速傅里叶变换是一个数值算法,不是个精确算法。 补充内容 (2012-10-10 18:12): 你那个程序的conj这里有点问题。我想问下为什么要用这个命令,用abs误差就小很多。
回复
分享到:

使用道具 举报

发表于 2012-9-25 17:24 | 显示全部楼层
我觉得是FFT的关系,快速傅里叶变换是一个数值算法,不是个精确算法。

补充内容 (2012-10-10 18:12):
你那个程序的conj这里有点问题。我想问下为什么要用这个命令,用abs误差就小很多。

点评

赞成: 5.0
赞成: 5
谢谢,是我搞错了,只是取模,没有平方的,用abs就对了,不然还要开根号  发表于 2012-10-11 14:46
回复

使用道具 举报

 楼主| 发表于 2012-9-27 16:13 | 显示全部楼层
但是这两个对不上不是误差的原因,而是如果把前者每2点插值1点,就和后面一个完全一样的。所以是频率轴上的频率间隔没有对上,或者说频率点位置不对应。
回复

使用道具 举报

 楼主| 发表于 2012-10-10 11:36 | 显示全部楼层
模拟的信号和对应的频谱的表达式见附件1(word文件).

现在开始验证,用FFT
一、从时域信号求频谱曲线:
(1) 假设信号采样间隔是0.1秒,这样采样频率是10Hz,以信号为中心取1025点,这样用diff函数对其求导正好得到1024点得导数信号。代码如附件2第一部分。
(2) 对求导后的做1024点FFT,得到频谱,这时候频率轴上最小频率间隔是fs/1024。代码如附件2第二部分。

二、直接根据频谱公式得到频谱曲线,与上面的结果对比
将频率间隔也取成刚才的fs/1024,然后取1024点

书上的频谱公式中的u可能是频率f也可能是模拟角频率w,两者关系w=2*pi*f,如果是模拟角频率,只要将2*pi*f,f的取值还是将频率间隔也取成刚才的fs/1024,然后取1024点。但是两个结果都是不对的。


最后发现,无论哪一种结果,与直接通过信号求导再求FFT的结果都不同,如附件给出的图片,为什么
1179669_1348908885_803.jpg

[emuch.net]test.doc

24.5 KB, 下载次数: 1

[emuch.net]justTest.rar

559 Bytes, 下载次数: 1

点评

有高手指点吗  发表于 2012-10-10 11:37
回复

使用道具 举报

 楼主| 发表于 2012-10-11 11:18 | 显示全部楼层

abs函数是对复数取模,然后求MTF是这个模的平方
conj是求一个复数的共轭复数,一个复数和他的共轭复数相衬,就是复数的模的平方,两者应该是一样的。

另外,你说误差变小了,是不是你用abs后没有平方啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-1 17:45 , Processed in 0.061497 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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