加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

对matlab中fft函数使用的一些粗浅理解

(2019-09-22 14:10:47)
分类: 信号处理
matlab中提供了快速傅里叶变换的计算函数fft
对于时间离散序列x,其傅里叶变换用matlab可以表示
fft(x,N)
函数的输入参数N表示的是时间离散序列x参与fft运算的点的个数,而不是信号x的采样频率。
假设
y=fft(x,N)
那么返回序列y的长度也为N(可参考离散傅里叶变换相关理论)。
另一方面为了使得时域信号和频域信号能量相等,即频域信号获得正确的幅值,需要对fft运算后的信号除以N,以保证频域信号能量正确。至于为什么要除以N,这个和matlab中fft计算算法有关,具体我也不知道(matlab中fft算法不公开),但是如果要正确使用fft,保证频域信号能量正确,这个步骤是必不可少的。
总结一句话,就是N决定fft返回值的长度,以及fft返回频谱序列的能量。这和输入信号x的采样频率等性质没有太大关系。
实际中,我们经常需要对实数序列x进行傅里叶变换获得它的频谱,画出傅里叶变换后的幅值图我们发现变换后的信号是一个对称信号。
实际上,根据相关理论,长度为N的实数序列fft后获得的是长度为N,关于序列中心共轭对称(一些经典教材上将这种对称定义为圆周对称)的复数序列。这也就是为什么实数时间信号x用fft计算后变成对称的虚数的原因。因此在对这一类信号fft后信号做图时,只需要表示1:N/2个数的原因。
另外一个自然而然的问题是:既然fft后有N个变换后信号,变换后信号的N个点代表分别代表那些频率?
结论是:fft后序列最后一个点代表最大频率即信号的采样频率。那么离散时间序列x的采样频率为fs,则fft返回值的N个点代表的频率依次是N:fs/N:fs/fs。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有