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变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法. ...
 
随机推荐
- 【bzoj1925】[Sdoi2010]地精部落  组合数学+dp
			
题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到 ...
 - 【bzoj4128】Matrix  矩阵乘法+Hash+BSGS
			
题目描述 给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p) 输入 第一行两个整数n和p,表示矩阵的阶和模数,接下来一个n * n的矩阵A.接下来一个n * n的矩阵B 输出 输出 ...
 - BZOJ4556 [Tjoi2016&Heoi2016]字符串  【后缀数组 + 主席树 + 二分 + ST表】
			
题目 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了 一个长为n的字符串s,和m个问题.佳媛姐姐必须正确回答这m个问题,才能打开箱子拿到礼物,升职 ...
 - xp局域网共享访问没权限处理
			
参考: http://www.360doc.com/content/11/0114/00/905007_86380468.shtml
 - DispatcherServlet与ContextLoaderListener的对比
			
1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册 ...
 - LOJ#2302. 「NOI2017」整数
			
$n \leq 1000000$个操作:一,给$x$加上$a*2^b$:二,问$x$的某个二进制位$k$.$b,k \leq 30n$,$|a| \leq 1e9$. 30暴露了一切..可以把30个二 ...
 - iis 配置 aspnet起始页
			
起始页配置:在default document上面加上路径就可以了,例如 /home/kickoffjob asp.net 关于起始页的一般设置: 1: 在web.config中,加入form认证: ...
 - angular关于依赖注入
			
<html> <head> <title>Angular JS Forms</title> </head> <body> < ...
 - Linux 之 CentOS练习
			
CentOS练习 参考教程:[千峰教育] 一.安装配置CentOS 1.安装虚拟机:VirtualBox. (1)软件下载:https://www.virtualbox.org/. (2)一路点击下一 ...
 - [原创][SW]一些实用软件的小tips(长期更新)
			
0. 简介 生活中我们经常使用许多的小工具或软件,来提高我们的工作效率,比如UltraEdit.Notepad++等.本文主要做一些记录,目的呢就是防止自己遗忘或者是快速的查询,来源是自己的摸索和网络 ...