DFT离散傅里叶变换【针对工科生,基础版本】
傅里叶分析告诉咱们任何周期信号都可以被表示成一组正弦(这里正弦包括余弦)函数的线性组合。
而离散傅里叶变换是想告诉咱们这些线性组合的各个分量的频率、幅值、还有相位。
那它是如何做到的呢?
首先我对两个周期的余弦函数进行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离散傅里叶变换【针对工科生,基础版本】相关推荐
- DFT 离散傅里叶变换
DFT 离散傅里叶变换 latex公式在线编辑: https://www.latexlive.com/home## 公式: f ^ k = ∑ j = 0 n − 1 f j e ( − 2 π i ...
- SAR ADC系列2:DFT离散傅里叶变换
目录 ADC动态性能仿真/测试平台 DFT:离散傅里叶分析 DFT的 Matlab 实现: 频谱泄露: 如何规避频谱泄露: ADC性能分析:DFT Cadence环境下的DFT分析实例: Matlab ...
- 理解DFT(离散傅里叶变换)
文章目录 DFT做什么? DFT怎么做到这个的呢? 详细查看配对过程 这个时候就可以把X数组画出来了 把得到X的公式明确一下 DFT的公式 是为了保留相位信息 如何解决相位问题 现在看看这个复数代表啥 ...
- 离散傅里叶变换 (DFT)、快速傅里叶变换 (FFT)
目录 离散傅里叶变换 (DFT) 离散傅里叶变换的基 离散傅里叶变换 快速傅里叶变换 (FFT) 卷积 线性时不变系统 傅里叶级数 参考文献 离散傅里叶变换 (DFT) 离散傅里叶变换的基 对于周期为 ...
- 使用OpenCV实现离散傅里叶变换(DFT)
使用OpenCV实现离散傅里叶变换(DFT) 傅里叶变换,妈呀这个东东好高级啊!真的高级吗?理解起来还真是有点困难,需要一些高等数学的基础.有了OpenCV,你不理解也没问题,会用就OK!就好比你会用 ...
- 离散傅里叶变换DFT
离散傅里叶变换DFT 离散傅里叶变换的定义 实部和虚部的计算 振幅的计算 说明与注意 三角函数公式 特殊角的三角函数值 举例说明 全图汇总 离散傅里叶变换的定义 设x(n)是一个长度为M的有限长序列, ...
- 离散傅里叶变换-DFT(FFT基础)
本文是从最基础的知识开始讲解,力求用最通俗易懂的文字将问题将的通俗易懂,大神勿喷,多多指教啊,虽然说是从零学习FFT,但是基本的数学知识还是要有的,sin,cos,等. FFT(快速傅里叶变换)其本质 ...
- 【算法】离散傅里叶变换(DFT)
真实的系统是会离散的,时变的.理想者将瞬时态看成时线性的系统,将时变系统分成了不同阶段.离散在围观层面是连续的,但从表层感受时,变化是迅猛的,可以忽略不计变化的过程,因而成为了离散. 一.离散系统 离 ...
- 图像处理之离散傅里叶变换(DFT)
上学期修了数字图像处理这门课程,想着正好趁这个机会写(shui)几篇文章,告诉自己没有白学.傅里叶变换,是图像处理中的一个重要内容,频率域处理的操作都要建立在傅里叶变换的基础上,所以作为这个专栏的开篇 ...
最新文章
- 中文版GPT-3来了?智源研究院发布清源 CPM —— 以中文为核心的大规模预训练模型...
- Cisco防火墙技术汇总[转贴]
- InnoDB调优-索引优化策略
- BeanDefinitionReaderUtils 向容器注册Bean
- Jsoup使用DOM方法来遍历一个文档
- struts2中Action名称的搜索顺序
- 郁金香商业辅助教程 2016 笔记 11~15
- djaogo配置session使用redis
- mysql执行计划缓存在哪_怎么去看懂mysql的执行计划
- 【C/C++】运算符优先级记忆
- 梦醒了,一切都结束了
- 2022年煤矿安全监测监控特种作业证考试题库模拟考试平台操作
- Ubuntu18.04修改登录页面背景
- Laravel填充数据Seeder出现Target class [***] does not exist.
- dcos - 安装docker
- C++ Source Flowchart 自动生成C++程序流程图
- 计算机临床医学自动化哪个好,这五个专业待遇高,就业好,但是很难学,挂科风险大,选择要慎重...
- VS2010中添加Flash控件
- ADN8810 驱动
- cs231n Assignment1--机器学习基本方法与深度学习尝试
热门文章
- Tailwind 导致 antd 的 button icon svg 不居中的 bug
- 基于Springboot外卖系统08:员工账号状态管理功能+对象转换器+扩展Spring mvc的消息转换器
- 庆祝六一儿童节:Python实现的随机礼物分配器
- 基于python的智能语音助手下载_GitHub - shaocj/DuerOS-Python-Client: 基于DuerOS的个人的智能语音助手...
- callback(回调函数)
- MySQL有这一篇就足够了
- 前端(Vue)sha512加密、后端(Java)sha512加密后加盐实现完整流程
- 性价比高台式计算机,性价比高且适合办公的台式电脑有哪些推荐?
- spark源码解读4之SortByKey
- python可以自动录凭证_我用 Python 实现自动刷抖音小姐姐