Matlab---傅里叶变换---通俗理解(二)
1、用Matlab进行傅立叶变换
FFT是离散傅里叶变换的高速算法,能够将一个信号变换到频域。有些信号在时域上是非常难看出什么特征的,可是假设变换到频域之后,就非常easy看出特征了。这就是非常多信号分析採用FFT变换的原因。
另外,FFT能够将一个信号的频谱提取出来。这在频谱分析方面也是经经常使用的。
FFT结果的详细物理意义。
一个模拟信号。经过ADC採样之后,就变成了数字信号。採样定理告诉我们,採样频率要大于信号频率的两倍。
的整数次方。
秒时间的信号并做FFT。则结果能够分析到0.5Hz。如果要提高频率分辨力。则必须添加採样点数,也即採样时间。频率分辨率和採样时间是倒数关系。
如果FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b。相位就是Pn=atan2(b,a)。依据以上的结果。就能够计算出n点(n≠1,且n<=N/2)相应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn)。即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。
因为FFT结果的对称性。通常我们仅仅使用前半部分的结果,即小于採样频率一半的结果。
2、以下以一个实际的信号来做说明
。
实际情况怎样呢?我们来看看FFT的结果的模值如图所看到的。
点附近有比較大的值。我们分别将这三个点附近的数据拿上来细看:
点: 512+0i
点: -2.6195E-14 - 1.4162E-13i
点: -2.8586E-14 - 1.1898E-13i
点:-6.2076E-13 - 2.1713E-12i
点:332.55 - 192i
点:-1.6707E-12 - 1.5241E-12i
点:-2.2199E-13 -1.0076E-12i
点:3.4315E-12 + 192i
点:-3.0263E-14 +7.5609E-13i
。接着,我们来计算各点的幅度值。分别计算这三个点的模值。结果例如以下:
依照公式。能够计算出直流分量为:512/N=512/256=2;50Hz信号的幅度为:384/(N/2)=384/(256/2)=3。75Hz信号的幅度为192/(N/2)=192/(256/2)=1.5。可见,从频谱分析出来的幅度是正确的。
然后再来计算相位信息。直流信号没有相位可言,不用管它。先计算50Hz信号的相位,atan2(-192, 332.55)=-0.5236,结果是弧度,换算为角度就是180*(-0.5236)/pi=-30.0001。再计算75Hz信号的相位,atan2(192,
3.4315E-12)=1.5708弧度,换算成角度就是180*1.5708/pi=90.0002。
可见,相位也是对的。依据FFT结果以及上面的分析计算。我们就能够写出信号的表达式了。它就是我们開始提供的信号。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VvbXV0aWFuOTEx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
相应上图2中的FFT模值
三、总结
如果採样频率为Fs,採样点数为N,做FFT之后,某一点n(n从1開始)表示的频率为:Fn=(n-1)*Fs/N;该点的模值除以N/2就是相应该频率下的信号的幅度(对于直流信号是除以N)。该点的相位即是相应该频率下的信号的相位。
相位的计算可用函数atan2(b,a)计算。atan2(b,a)是求坐标为(a,b)点的角度值,范围从-pi到pi。
要精确到xHz,则须要採样长度为1/x秒的信号,并做FFT。
要提高频率分辨率。就须要添加採样点数,这在一些实际的应用中是不现实的,须要在较短的时间内完毕分析。
解决问题的方法有频率细分法,比較简单的方法是採样比較短时间的信号,然后在后面补充一定数量的0,使其长度达到须要的点数,再做FFT,这在一定程度上可以提高频率分辨力。
详细的频率细分法可參考相关文献。
Matlab---傅里叶变换---通俗理解(二)的更多相关文章
- 傅里叶变换通俗解释及快速傅里叶变换的python实现
通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ...
- 通俗理解Android事件分发与消费机制
深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...
- Effective Java通俗理解(持续更新)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- 关于MySQL中的自联结的通俗理解
关于MySQL中的自联结的通俗理解 前言:最近在通过SQL必知必会这本书学习MySQL的基本使用,在学习中也或多或少遇到了点问题,我也正好分享给大家,我的这篇博客用到的所有表格的代码都是来自SQL必知 ...
- Effective Java通俗理解(上)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- CNN笔记:通俗理解卷积神经网络【转】
本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...
- 通俗理解LDA主题模型
通俗理解LDA主题模型 0 前言 印象中,最開始听说"LDA"这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印 ...
- CNN笔记:通俗理解卷积神经网络
CNN笔记:通俗理解卷积神经网络 2016年07月02日 22:14:50 v_JULY_v 阅读数 250368更多 分类专栏: 30.Machine L & Deep Learning 机 ...
- Effective Java通俗理解(下)
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...
- 基于python的快速傅里叶变换FFT(二)
基于python的快速傅里叶变换FFT(二)本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点 FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法. ...
随机推荐
- 解决Failed with error: unable to access 'https://git.coding.net/chenmi1234/lianpos.git/': Couldn't resolve host 'git.coding.net'
代码改变世界 github push 出现问题 Failed with error: unable to access 'https://git.coding.net/chenmi1234/lianp ...
- CSS:IE,Chrome,Firefox兼容性和CSS Hack(转载)
原作者:微米博客 以前写过一篇关于CSS hack的文章,但近期回头看了看发现理解的不够深刻,总结的也不凝练,于是今天重新测试从新写一篇.常用的CSS hack如下(笔者只对IE&FF& ...
- P1473 校门外的树3
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一 ...
- 【CF1015A】Points in Segments(签到)
题意:有一条上面有n个点的数轴,给定m次操作,每次覆盖(x[i],y[i]),求最后没有被覆盖过的点的数量与他们的编号 n,m<=100 思路: #include<cstdio> # ...
- 彻底搞定C指针-函数名与函数指针【转】
转自:http://blog.csdn.net/a1232345/article/details/43524371 函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子://自行包含头 ...
- PhPStorm 快捷键使用(转载)
PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能.Phpstrom的一款名 ...
- Ruby自动化测试(操作符的坑)
事情是这样的: times++ @ddr = DDR::DDR.new() 执行到这里的时候,总是报错:'+@' undefied method.刚开始的时候以为是机器在重启过程中一些不稳定函数调用或 ...
- 焦作F Modular Production Line 费用流
题目链接 题解:这道题比赛的时候,学弟说是网络流,当时看N这么大,觉得网络流没法做,实际本题通过巧妙的建图,然后离散化. 先说下建图方式,首先每个覆盖区域,只有左右端点,如果我们只用左右端点的话,最多 ...
- 《从零开始搭建游戏服务器》项目管理工具Maven
简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架. Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在 ...
- Light oj 1085 - All Possible Increasing Subsequences (简单dp + 离散化 + BIT)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1085 题意: 问你有多少个上升子序列. 思路: dp[i]表示以第i个数结尾的 ...