傅里叶分析告诉咱们任何周期信号都可以被表示成一组正弦(这里正弦包括余弦)函数的线性组合

而离散傅里叶变换是想告诉咱们这些线性组合的各个分量的频率、幅值、还有相位

那它是如何做到的呢?

首先我对两个周期的余弦函数进行40次采样,任务是我怎么知道这40次采样里面余弦函数振动了多少次呢?

  • 对人类而言我们可以直接数出来有俩周期
  • 对计算机而言只能通过暴力破解

那么计算机是怎么暴力破解的呢?

选四十个基信号,对于0 periods in 40 samples这里图画错了,应该是0~30而不是1~40。

比如 x periods in 40 samples,意思是对这 x peirods 信号就行40次采样的意思,理解这句话就方便理解下面的解释了

可能大家会对x[n]=cos(2π.39n/40)这个公式的图疑惑,以下为解释(欢迎指正):

  • cos(2PI-x) = cos(x)    所以图像相同
  • 图像一样,可以理解为实际上如果连续的话,是密密麻麻的震动,但是因为你是定时间采样,所以采样点跟上面的看起来一样
  • 相当于一个周期采样一个点,连起来放到一张图里就这样了,因为取了39个采样,每个采样的点拼在一起正好是cos

好现在我们得到这40个基信号(用matlab很好生成) ,然后我要做什么呢?图中红字所表示

相关函数Correlation(x,y)可以是向量(序列)的内积还可以是卷积等等(不错的值得学习调研的地方)

就两个序列X=[x1,...,xn]与Y=[y1,...,yn]的x1y1+...+xnyn这个和越高,代表相关性越高,这是相关函数最简单的一种

然后我们original signal与这40个Basic signals都去做一下这个相关程度的比较,我们来详细看一下这个比较过程,我们用X数组来储存相关值

在这个例子中计算出来发现X[2]=X[38]=20,其他基信号与原信号的内积为0,然后我们再可视化一下这个结果,可能我们知道X是什么意思了,但是还是不知道X代表那个频率,不着急,咱们继续往下看

这里咱们用把公式Generalize一下得到General notation,DFT Formula的指数看着有点复杂咱们用欧拉公式展开表达出来,这里General notation与DFT Formula的实数项是一致的,那为什么我们需要复数项呢?

如果原信号只与余弦基做比较,会丢失相位信息,举个栗子,正弦函数图像相位左加右减,我们把原信号左移π/3,用刚才的方法重新计算一遍X数组,X[2]与X[38]依然是最大的但是变成了10,其他值依然为零,再把这个图可视化一下,峰值的位置还是一样的,大概趋势是差不多的,如果我们把原信号的只做幅值减半,不做相位偏移通过刚才一样与40个基信号的计算也能得到同样的X数组,所以我们通过X数组反推回去,不知道原信号是有了相位偏移还是幅值减半,换句话说我们是损失了信息。

怎么解决呢?我们找了一组正弦基,与他们也比较一下,原信号与40个余弦基比较产生了数组,与40个正弦基比较也产生了数组

应该为,相应后面的也要改成

这个时候我再把X写成一个复数的话,复数的模刚好是20,相位刚好是,这样就可以重建我们的原信号

虽然我们知道是原信号与Cos、Sin基信号相关程度的结果储存在数组,但为什么两个相关程度这么一算就得到原信号的模和相位呢?背后的数学其实很深,有泛函分析,对工科生而言感兴趣可以继续往下研究。

我们一直在讨论的结果都是一个一个的离散点,还不知道这些离散点的频率呢

其实很简单,刚才是用40个采样点对两个周期进行采集,没有提到采样频率,只要我给一个

这个X所对应的频率立刻就可以算出来,在40个采样内,振动了K个周期的那个信号的频率我就知道了,举个栗子,,那么40个采样就是,前提我知道我采集的是两个周期的信号,那么该信号周期,那么该信号频率

傅里叶变换的思想是,刚原信号不是和40个基信号做了比较吗,那么我跟那个基信号长的最像,那么我那个频率的分量就越大,比如现在我想知道X[k]代表的频率多少

采样时长:N/fs,在这个时间长度内经过了k个周期,则一个周期的时间为:N/(kfs),求倒数就是频率了

这样每一个X对应的频率都知道了

回头看看我们一直说的那个例子,通过以上流程得到我们的信号是由频率为200Hz与3800Hz的且幅值都为20的余弦信号构成, 但其实3800Hz是一个不准确的值,因为我们知道在40个采样内,它振动了38个周期的话,我们只采样40次是损失了信息的,所以3800Hz这个基信号是不准确的,由香农采样定理可知(一个周期至少采样两次),所以说,如果在40个采样内振动20个周期,刚好是采样两次( ),40个采样内振动超过20个周期的话,那么我每个周期就不足两次了,这样超过X[20]的采集到的值都是不对的,所以说,通常来说人们只关心实信号前面的一般,图中土色表示

香农采样定理,又称奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。

为了不失真地恢复模拟信号,采样频率应该大于等于模拟信号频谱中最高频率的2倍。  

参考资料

离散傅里叶变换零基础入门-中文1(针对工科生,无需连续傅立叶变换知识)_哔哩哔哩_bilibili

工科生以最快的速度理解离散傅立叶变换(DFT)_哔哩哔哩_bilibili

DFT离散傅里叶变换【针对工科生,基础版本】相关推荐

  1. DFT 离散傅里叶变换

    DFT 离散傅里叶变换 latex公式在线编辑: https://www.latexlive.com/home## 公式: f ^ k = ∑ j = 0 n − 1 f j e ( − 2 π i ...

  2. SAR ADC系列2:DFT离散傅里叶变换

    目录 ADC动态性能仿真/测试平台 DFT:离散傅里叶分析 DFT的 Matlab 实现: 频谱泄露: 如何规避频谱泄露: ADC性能分析:DFT Cadence环境下的DFT分析实例: Matlab ...

  3. 理解DFT(离散傅里叶变换)

    文章目录 DFT做什么? DFT怎么做到这个的呢? 详细查看配对过程 这个时候就可以把X数组画出来了 把得到X的公式明确一下 DFT的公式 是为了保留相位信息 如何解决相位问题 现在看看这个复数代表啥 ...

  4. 离散傅里叶变换 (DFT)、快速傅里叶变换 (FFT)

    目录 离散傅里叶变换 (DFT) 离散傅里叶变换的基 离散傅里叶变换 快速傅里叶变换 (FFT) 卷积 线性时不变系统 傅里叶级数 参考文献 离散傅里叶变换 (DFT) 离散傅里叶变换的基 对于周期为 ...

  5. 使用OpenCV实现离散傅里叶变换(DFT)

    使用OpenCV实现离散傅里叶变换(DFT) 傅里叶变换,妈呀这个东东好高级啊!真的高级吗?理解起来还真是有点困难,需要一些高等数学的基础.有了OpenCV,你不理解也没问题,会用就OK!就好比你会用 ...

  6. 离散傅里叶变换DFT

    离散傅里叶变换DFT 离散傅里叶变换的定义 实部和虚部的计算 振幅的计算 说明与注意 三角函数公式 特殊角的三角函数值 举例说明 全图汇总 离散傅里叶变换的定义 设x(n)是一个长度为M的有限长序列, ...

  7. 离散傅里叶变换-DFT(FFT基础)

    本文是从最基础的知识开始讲解,力求用最通俗易懂的文字将问题将的通俗易懂,大神勿喷,多多指教啊,虽然说是从零学习FFT,但是基本的数学知识还是要有的,sin,cos,等. FFT(快速傅里叶变换)其本质 ...

  8. 【算法】离散傅里叶变换(DFT)

    真实的系统是会离散的,时变的.理想者将瞬时态看成时线性的系统,将时变系统分成了不同阶段.离散在围观层面是连续的,但从表层感受时,变化是迅猛的,可以忽略不计变化的过程,因而成为了离散. 一.离散系统 离 ...

  9. 图像处理之离散傅里叶变换(DFT)

    上学期修了数字图像处理这门课程,想着正好趁这个机会写(shui)几篇文章,告诉自己没有白学.傅里叶变换,是图像处理中的一个重要内容,频率域处理的操作都要建立在傅里叶变换的基础上,所以作为这个专栏的开篇 ...

最新文章

  1. 中文版GPT-3来了?智源研究院发布清源 CPM —— 以中文为核心的大规模预训练模型...
  2. Cisco防火墙技术汇总[转贴]
  3. InnoDB调优-索引优化策略
  4. BeanDefinitionReaderUtils 向容器注册Bean
  5. Jsoup使用DOM方法来遍历一个文档
  6. struts2中Action名称的搜索顺序
  7. 郁金香商业辅助教程 2016 笔记 11~15
  8. djaogo配置session使用redis
  9. mysql执行计划缓存在哪_怎么去看懂mysql的执行计划
  10. 【C/C++】运算符优先级记忆
  11. 梦醒了,一切都结束了
  12. 2022年煤矿安全监测监控特种作业证考试题库模拟考试平台操作
  13. Ubuntu18.04修改登录页面背景
  14. Laravel填充数据Seeder出现Target class [***] does not exist.
  15. dcos - 安装docker
  16. C++ Source Flowchart 自动生成C++程序流程图
  17. 计算机临床医学自动化哪个好,这五个专业待遇高,就业好,但是很难学,挂科风险大,选择要慎重...
  18. VS2010中添加Flash控件
  19. ADN8810 驱动
  20. cs231n Assignment1--机器学习基本方法与深度学习尝试

热门文章

  1. Tailwind 导致 antd 的 button icon svg 不居中的 bug
  2. 基于Springboot外卖系统08:员工账号状态管理功能+对象转换器+扩展Spring mvc的消息转换器
  3. 庆祝六一儿童节:Python实现的随机礼物分配器
  4. 基于python的智能语音助手下载_GitHub - shaocj/DuerOS-Python-Client: 基于DuerOS的个人的智能语音助手...
  5. callback(回调函数)
  6. MySQL有这一篇就足够了
  7. 前端(Vue)sha512加密、后端(Java)sha512加密后加盐实现完整流程
  8. 性价比高台式计算机,性价比高且适合办公的台式电脑有哪些推荐?
  9. spark源码解读4之SortByKey
  10. python可以自动录凭证_我用 Python 实现自动刷抖音小姐姐