信号的傅里叶变换结果与理论结果对不上
一个信号分两段如下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误差就小很多。 但是这两个对不上不是误差的原因,而是如果把前者每2点插值1点,就和后面一个完全一样的。所以是频率轴上的频率间隔没有对上,或者说频率点位置不对应。 模拟的信号和对应的频谱的表达式见附件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的结果都不同,如附件给出的图片,为什么 noki0323 发表于 2012-9-26 15:40 static/image/common/back.gif
我觉得是FFT的关系,快速傅里叶变换是一个数值算法,不是个精确算法。
补充内容 (2012-10-10 18:12):
abs函数是对复数取模,然后求MTF是这个模的平方
conj是求一个复数的共轭复数,一个复数和他的共轭复数相衬,就是复数的模的平方,两者应该是一样的。
另外,你说误差变小了,是不是你用abs后没有平方啊
页:
[1]