热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

matlab中fft函数的一点理解

看了一篇讲理解离散傅立叶变换(二.实数形式离散傅立叶变换)的文章(本博客“文章”中有转载,点击该链接可以直接进入作者的博客),可是一直不大好理解。所以想用matlab验证一下,增强理解,

 

   看了一篇讲理解离散傅立叶变换(二. 实数形式离散傅立叶变换)的文章(本博客“文章”中有转载,点击该链接可以直接进入作者的博客),可是一直不大好理解。所以想用matlab验证一下,增强理解,顺便把验证的东西分享一下:

    首先,FFT(快速傅里叶变换)是一种实现DFT(离散傅里叶变换)的快速算法,是利用复数形式的离散傅里叶变换来计算实数形式的离散傅里叶变换)。matlab中的fft函数是实现该算法的实现(所以其实这个实验的内容是帮助理解复数形式的离散傅里叶变换与实数形式的离散傅里叶变换之间的关系的)。

废话不多说,先用matlab计算一个信号x的fft:

>> x=[1 2 3 4];

>> y=fft(x)

y =

10.0000      -2.0000 + 2.0000i      -2.0000     -2.0000 - 2.0000i

前面说的文章中提到DFT的合成等式:

                        dft

但是,如何将fft得到的结果和公式中的内容对应起来?

文章还提到:

那fft中得到的y的复数结果究竟是ReX还是ReXbar?(其实是ReX)根据上面的公式,cos和sin的系数都是N/2+1个,可y中却有N个系数,其中的系数如何对应?

于是做了以下的验证:

我们知道,式中N=4;频率w=2π/N=1.5708;

>> rey=real(y)

rey =

10 -2 -2 -2

>> imy=imag(y)

imy =

0 2 0 -2

我们只取前(N/2+1=3)个系数,舍弃后面的系数,根据上面的转换公式,求出对应的系数:

>> reybar=[10/4 -2/2 -2/4]

reybar =

2.5000 -1.0000 -0.5000

同样求出imybar=[0 1 0],这样我们通过合成公式尝试着获得原来的x

x(0)的值为

>> 2.5*cos(w*0*0)-1*cos(w*0*1)-0.5*cos(w*0*2)+0*sin(w*0*0)-1*sin(w*0*1)+0*sin(w*0*2)

ans =

1

x(1)的值为

>> 2.5*cos(w*1*0)-1*cos(w*1*1)-0.5*cos(w*1*2)+0*sin(w*1*0)-1*sin(w*1*1)+0*sin(w*1*2)

ans =

2

同样求出,x(2),X(3)的值,恰好为 3和4,说明了上面的验证是正确的。

也就是说:

1.matlab中的fft是根据复数形式的DFT来计算的,求出来的值其实是对应的频率密度;

2.在已知输入信号x的周期N的条件下,只需fft结果中的前(N/2+1)个值就可以正确还原出原信号x。

 

 

 


推荐阅读
  • GNU GRUB(简称GRUB)是一个来自GNU项目的支持多启动的引导加载程序。它允许用户在同一台计算机上安装多个操作系统,并在启动时选择希望启动的系统。 ... [详细]
  • P4168[Violet]蒲公英题目背景亲爱的哥哥:你在那个城市里面过得好吗?我在家里面最近很开心呢。昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的 ... [详细]
  • 本文详细解析了muduo库中的Socket封装及字节序转换功能。主要涉及`Endian.h`和`SocketsOps.h`两个头文件,以及`Socket.h`和`InetAddress.h`类的实现。 ... [详细]
  • 随着iPhone 11系列的发布,苹果公司引入了先进的夜间模式,显著提升了夜间摄影的质量,解决了之前版本在低光环境下拍摄效果不佳的问题。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 不同城市的Python工程师薪资对比与工程机械操作员的薪资分析
    本文探讨了中国各主要城市Python工程师的薪资水平,并对工程机械行业中多种机械设备操作员的薪资进行了详细分析。通过对比不同设备的操作难度和技术要求,为有意进入该领域的求职者提供了参考。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 探索微信影响力排名的秘密:解读并计算WCI指数
    在日常浏览微信时,我们经常能见到各类新媒体影响力排行榜。其中,最后一列的WCI指标常引起人们的好奇。本文将深入解析WCI的含义及其计算方法,并通过Python代码实例展示如何计算WCI V14.2。 ... [详细]
  • 深入探讨机器学习中的查准率、查全率及F1分数
    本文详细解析了机器学习领域中常用的性能评估指标——查准率、查全率及其综合评价指标F1分数,通过具体案例分析这些指标在实际应用中的重要性和差异。 ... [详细]
  • 对称与非对称加密技术的比较及应用
    本文探讨了对称加密与非对称加密的主要区别,重点分析了非对称加密中的公钥体系及其在解决密钥分发问题上的优势。对称加密依赖单一密钥进行加密解密,而非对称加密则采用一对公私钥来完成安全通信。 ... [详细]
  • 聚焦法是一种采用穷尽搜索策略的Filter型特征选择方法,其核心在于寻找能有效区分不同样本的最小特征集合。此方法的评估标准主要依赖于一致性测量。 ... [详细]
  • Serato 推出全新 Stems 功能,DJ 软件迎来重大升级
    Serato 最近为其 DJ 软件推出了全新的 Stems 功能,使得用户能够轻松地将音乐中的不同部分如人声、旋律、贝斯和节奏进行分离,为音乐创作和现场表演提供了更多可能性。 ... [详细]
  • 本文详细介绍了WebRTC提供的音频处理引擎,包括自动增益控制(AGC)、噪声抑制(ANS)、移动设备声学回声消除(AEC)及静音检测(VAD)等核心算法,并提供了完整的C语言实现代码。 ... [详细]
author-avatar
panda光光_897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有