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变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法. ...
随机推荐
- ACM程序设计选修课——1043: Radical loves integer sequences(YY)
1043: Radical loves integer sequences Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 4 ...
- [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
[LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...
- offsetWidth clientWidth scrollWidth 三者之间的区别和联系
scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变. off ...
- JavaWeb学习总结(十二)——Session(转)
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- 一款多功能的移动端滚动选择器,支持单选到多选、支持多级级联、提供自定义回调函数、提供update函数二次渲染、重定位函数、兼容pc端拖拽等等..
https://github.com/onlyhom/mobileSelect.js/blob/master/docs/README-CN.md mobileSelect.js 一款多功能的移动端滚动 ...
- linux内核设计与实现第一章
1.1 unix的历史 Thompson实现unix 伯克利大学对其进一步开发推出了著名的BSD 其他各大厂商相继推出自己的unix 1.1.2 unix的特性 unix系统是一个强大,健壮,稳定的操 ...
- Definition vs declaration
#include <stdio.h> union test1; // declaration union test2 { // The definition of union test2 ...
- hdu 1401(单广各种卡的搜索题||双广秒速)
Solitaire Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- hdu6219(最大空凸包)
题意: 给一些点,求出一个最大的空凸包,这个凸包里没有任何给定点且要求这个凸包面积最大 分析: 枚举凸包左下角的点,然后dp[i][j]表示凸包的最后两条边是j->i和i->O情况下凸包的 ...
- PyTorch学习笔记之初识word_embedding
import torch import torch.nn as nn from torch.autograd import Variable word2id = {'hello': 0, 'world ...