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变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法. ...
随机推荐
- iOS-----5分钟学会枚举的正确使用姿势-Enumeration宏
前言 Enum,枚举,相信大部分编程语言都有对应的枚举类型,功能可能有多有少,但是枚举最核心的功能是 “规范的定义代码中的状态.状态码.选项”. 状态.状态码.选项 什么是状态:同时只能出现一个值(状 ...
- 【Luogu】P2486染色(树链剖分)
题目链接 线段树维护左端颜色,右端颜色,颜色段数量. 合并的时候看左子树的右端颜色是不是等于右子树的左端颜色,如果等于那么颜色段数量要-1S 然后在树剖跳链的时候搞同样的操作qwq 然后就没有然后了 ...
- Django notes I: collection of links to the Django document
Links to the Django documents: the Django template language automatically generated context variable ...
- Date对象在苹果手机下兼容问题的解决方法
Date在不同浏览器中对于传入的时间字符串的格式要求是不一样的.比如在chrome浏览器的控制台中输入以下内容,会得到相应结果: Date.parse('2015-11-11 00:00:00') / ...
- [转] iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接
转自:http://blog.csdn.net/missautumn/article/details/17102067 如果你的应用程序需要在设备休眠的时候还能够收到服务器端发送的消息,那我们就可 ...
- gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF
gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF 问题描述: 使用tar命令解压文件时,报错: gzip: stdin: unexpected ...
- 输入框为数字类型时防止maxlength属性不起作用
<input type="number" oninput="if(value.length>5)value=value.slice(0,5)" /& ...
- Codeforces Gym101502 A.Very Hard Question
2017 JUST Programming Contest 3.0 昨天的训练赛,打的好难过,因为被暴打了,写了8题,他们有的写了9题,差了一道dp,博客上写7道题的题解. 因为有一道是套板子过的,并 ...
- 咦?Oracle归档文件存哪了?
实验环境:RHEL 5.4 + Oracle 11.2.0.3 现象:日志切换后没找到归档日志目录. 1.查看归档日志路径 2.日志切换后并未找到归档目录 3.创建归档目录后再次观察 引申知识 1.查 ...
- spring boot原理分析
1.分析spring-boot-starter-parent <parent> <groupId>org.springframework.boot</groupId> ...