目录

一. 思考几个问题

二. 狄拉克函数和sinc函数

三. DFT的计算公式

四. 频谱幅值和时域信号幅值的关系

五. 频谱的中心对称性

六. 取样和频率间隔间的关系

七. Python实现一维FFT

八. 对图像进行FFT


一. 思考几个问题

我们知道无论是Matlab还是Python实现FFT都是十分容易的,但是需要思考几个问题:

  • 狄拉克函数?sinc函数?
  • DFT的计算公式是什么?DFT后长度不变?
  • 频谱的横坐标有何物理意义?横轴范围是多少?分辨率又是多少?
  • 采样点数、采样频率、采样持续时间是否理解?更改采样点数或采样频率,对频谱有何影响?
  • 频率谱幅值和时域信号幅值的关系?
  • 频谱中F[0]的物理意义是什么?
  • 为什么得到的频谱(除去第一个点)是中心对称的?
  • 对图像进行FFT,频谱原点在哪里?如何进行中心化?
  • 对图像进行FFT,得到的图像物理意义是什么?

二. 狄拉克函数和sinc函数


三. DFT的计算公式


四. 频谱幅值和时域信号幅值的关系

注意:这里所说的频谱,指的是FFT后取模得到的曲线。


五. 频谱的中心对称性


六. 取样和频率间隔间的关系


七. Python实现一维FFT

''' Author: Jiuwu Hao '''
import numpy as np
from scipy.fftpack import fft,fft2,fftshift
from math import pi
import matplotlib.pyplot as pltdef hjw_dft(fs,signal):# 信号持续时间T,即样本点数*采样间隔T = len(signal)*(1/fs)# x轴整体范围时采样持续时间,分辨率是采样间隔x = np.arange(0,T,1/fs)plt.plot(x,signal)plt.title('Original')plt.show()# dft后,长度不变,是复数表示,想要频谱图需要取模dft = fft(signal)dft = np.abs(dft)/(len(dft)/2)dft[0] /= 2# 归一化# dft = (dft-np.min(dft))/(np.max(dft)-np.min(dft))# 在频率域中,横轴范围为采样频率,分辨率是1/T,即持续时间的倒数dft_x = np.arange(0,fs,1/T)plt.plot(dft_x,dft)plt.title('DFT')plt.show()# 由于Nyquist采样定律和信号的对称性都可以证明,只要取一半的频率区间即可dft_half = dft[0:int(len(dft)/2)]dft_x_half = dft_x[0:int(len(dft)/2)]plt.plot(dft_x_half,dft_half)plt.title('DFT_Half')plt.show()fs = 2000 # 采样率为2000Hz
n = 10000 # 采样点数为10000
T = n*(1/fs)  # 采样持续时间
# 注意:在构造测试函数时,不能x = np.arange(n),要符合实际物理意义的采样频率
x = np.arange(0,T,1/fs)
# 信号频率为100,200Hz,直流分量为4
y = 3*np.sin(2*pi*100*x) + 5*np.cos(2*pi*200*x) +4  if __name__ == '__main__':hjw_dft(fs,y)

代码效果:


八. 对图像进行FFT

空间域和频率域的原点都在左上角。同样,|F[0,0]|/MN代表了图像灰度的平均值。典型地,由于比例常数MN通常很大,因此|F[0,0]|是谱的最大分量,可能比其他项大几个数量级。因此如果没有进行中心化,那么最亮的点位于原点。

为中心化该谱,我们用(-1)的x+y次幂去乘以原始图像,再进行FFT,可得到中心化频谱。由于直流分量支配着谱的值,因此其他灰度的动态范围被压缩了,为给出那些细节,可采用对数变换(1+log|F[u,v]|)。

图像FFT实例与代码:

链接:https://pan.baidu.com/s/1sIsmhnOTlOMVePeyWehQgw 
提取码:tr06

【傅里叶变换】DFT详细分析与Python实现相关推荐

  1. 【数字信号处理】序列傅里叶变换 ( 序列傅里叶变换定义详细分析 | 证明单位复指数序列正交完备性 | 序列存在傅里叶变换的性质 | 序列绝对可和 → 序列傅里叶变换一定存在 )

    文章目录 一.序列傅里叶变换定义详细分析 二.证明单位复指数序列正交完备性 三.序列存在傅里叶变换的性质 一.序列傅里叶变换定义详细分析 序列傅里叶变换 SFT , 英文全称 " Seque ...

  2. 区块链实现代码详细分析(Python)

    代码 import hashlib import json import requests from textwrap import dedent from time import time from ...

  3. LeetCode#546. 移除盒子 (Python解法+详细分析)

    问题描述: 给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色. 你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止.每一轮你可以移除具有相同颜色的连续 k 个盒子(k &g ...

  4. 傅里叶级数FS,连续时间傅里叶变换CTFT,离散时间傅里叶变换DTFT,离散傅里叶变换DFT,推导与联系(一)

    本文主要从傅里叶级数 FS,连续时间傅里叶变换 CTFT,离散时间傅里叶变换 DTFT,以及离散傅里叶变换 DFT 之间的区别与联系进行了比较详细的讨论,主要注重于公式形式上的推导,略去了相关的图像示 ...

  5. 傅里叶变换、离散傅里叶变换(DFT)、快速傅里叶变换(FFT)详解

    前置知识 以下内容参考<复变函数与积分变换>,如果对积分变换有所了解,完全可以跳过忽略 复数的三角表达式如下 Z=r(cosθ+isinθ)Z=r(cos\theta+isin\theta ...

  6. HashMap 源码详细分析(JDK1.8)

    1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap.HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现.HashMap 允许 null 键和 null 值 ...

  7. opencv学 之图像傅里叶变换dft

    一.前言 接触了图像的傅里叶变换,数学原理依旧不是很懂,因此不敢在这里妄言.下午用Opencv代码实现了这一变换,有一些经验心得 二.关键函数解析 2.1copyMakeBorder() 扩展图片尺寸 ...

  8. python程序分析,用Python编写分析Python程序性能的工具的教程

    用Python编写分析Python程序性能的工具的教程 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  用Python编写分析Python程序性能的工具的教程.tx ...

  9. android ListView 九大重要属性详细分析

    2019独角兽企业重金招聘Python工程师标准>>> android ListView 九大重要属性详细分析 1.android ListView 一些重要属性详解,兄弟朋友可以参 ...

最新文章

  1. javascript编写_用JavaScript深入探讨:为什么对编写好的代码至关重要。
  2. 【Storm篇】--Storm基础概念
  3. 图解Oracle用户管理
  4. java垃圾回收算法超详细全解
  5. 使用apache的HttpClient进行http通讯,隐藏的HTTP请求头部字段是如何自动被添加的
  6. 1,2,2,3,3,4,4,4,......
  7. Python 字符串与二进制串的相互转换
  8. java 下载文件的文件名乱码_java下载文件名乱码解决方法介绍
  9. Adobe LiveCycle Designer 报表设计器
  10. 华三交换机ping大包命令_华三(H3C)交换机命令大全
  11. php简易微博系统,基于html、css、PHP开发一个简单的微型博客系统(微博)
  12. CSS3 Shape详解
  13. 发生内部错误。请与 microsoft 支持部门联系。_设计变更、工程签证、确认单、工程洽商、联系单、会签的是干啥的?有啥区别?...
  14. 怎么恢复格式化的sd卡呢?
  15. Python3.8场景式编程学习与训练- 第1章 入门基础 Python学习方法论与学习资源
  16. Apache Zeppelin安装和启动
  17. 识别孩子潜能的6大细节
  18. 随机变量与随机过程详解
  19. autodesk(欧特克)CAD发展简史
  20. 神策数据携手老虎证券,用科技赋能美港股券商打造极致体验

热门文章

  1. 学习笔记四.基于HAL库的stm32f103硬件读写EEPROM(CUBEMX)
  2. sublime text 替代_Lime :号称 Sublime Text 编辑器的开源替代品
  3. 汽车一键启动开关发动机启动按钮点火开关图解
  4. 腾讯域名防封 微信/QQ域名检测,域名防封的原理
  5. 微信小程序文章界面简单布局
  6. Python实现天气查询源码_复制可执行,可用
  7. MapReduce作业Uber模式
  8. cpu风扇转速调节怎么调?怎么查看CPU风扇的转速?所有的CPU风扇都可以调节风扇转速吗,怎么控制?...
  9. 难受啊,139天备战字节跳动,一个疏忽让我前功尽弃...
  10. JS逆向-常见反调试之“无限Debugger”,怎么解决?