给定N个点的一维数组

的离散傅里叶变换对由下面两式给出:

离散傅里叶变换是将离散信号分解为多个离散三角函数,并能给出每个三角函数的幅值

、频率

、初相位

.即找一批函数形如:

来叠加出任意给定的离散信号.只要知道了

,这个三角函数就完全知道了.

下面用具体的程序说明这个两个公式的具体含义及用法,本文演示所用的编程语言为python3.首先导入一些必要的包,以及定义一个方波信号,并画出一段时间的图像:

import numpy as np

from numpy import sin,cos,pi

import matplotlib.pyplot as plt

def square(t):

return np.piecewise(x=t,condlist=[t=-2)&(t<=2),t>2],funclist=[0,1,0])

N=100

t=np.linspace(-5,5,N)

dt=t[1]-t[0]

s=square(t)

然后,我们对得到的信号s进行离散傅里叶变换:

fft=np.fft.fft(s)

fftshift=np.fft.fftshift(fft)

mo=abs(fftshift)/N

phase=np.angle(fftshift)

fre=np.fft.fftshift(np.fft.fftfreq(d=dt,n=N))

这里对上面的程序的每一行做一些说明:

1.通过调用np.fft.fft函数,我们对

执行了离散傅里叶变换,也就是本文开头给出的公式中的正变换,并得到长度同样为N的一维复数数组.每个复数的模除以采样点数N代表该复数对应的三角函数的幅值

,复数的辐角代表对应的三角函数的初相位

,而对应的三角函数的频率

则由复数出现在数组中的位置给出,即:

如果N是偶数,则

如果N是奇数,则

其中

是数组s的采样时间间隔.如果

的单位是秒的话,

的单位就是

.可以看到复数数组中复数对应的频率

的出现顺序是0(直流分量),正频率,负频率.

2.由于变换完后的复数数组对应的频率在数组中的出现顺序是0(直流分量),正频率,负频率,所以很不对称,故利用函数np.fft.fftshift对得到的复数数组移位,使得数组中复数对应的频率是关于0对称的(即尽量让直流分量出现在数组的正中间,负频率出现在直流分量左边,正频率出现在直流分量右边,这么做的原因主要是为了画图好看).

3.取每个复数的模并除以采样点数N以便得到对应三角函数的幅值

.

4.取每个复数的辐角以便得到对应三角函数的初相位

,注意这里辐角的单位是弧度.

5.通过给定采样时间间隔

和总采样点数N,得到复数数组中每一个复数所对应的三角函数的频率

,当然这里同样为了频率关于0对称也做了移位操作.

幅值

做纵轴,频率

做横轴的图像叫幅度谱图;初相位

做纵轴,频率

做横轴的图像叫相位谱图.对于本例中的方波来说,其幅度谱图和相位谱图如下所示:

一个信号被分解成很多三角函数的和后只要同时知道幅度谱和相位谱就能够还原回去.为了验证这些三角函数确实能够很好叠加出方波信号,根据幅度谱和相位谱,构造这些三角函数并画出每一个三角函数:

recover=np.zeros(N)

plt.figure(figsize=(8,6))

for a,p,f in zip(mo,phase,fre):

singelCos=a*cos(2*pi*f*np.arange(N)*(dt)+p)#根据幅度,相位,频率构造三角函数

recover+=singelCos#把这些三角函数都加起来

plt.plot(t,singelCos,lw=2)

plt.xlabel('Time (s)',fontsize=15)

plt.ylabel('Amplitude',fontsize=15)

plt.tick_params(labelsize=15)

plt.title('All Components',fontsize=15)

所有的三角函数成分的图像如下(直流成分也可以看成三角函数的频率为0):

程序中recover记录了这些三角函数的和,我们画出recover的图像,并与原始信号比较:

可以发现几乎与原信号无二.其实,我们恢复原始信号的过程正是本文开头给出的离散傅里叶逆变换.

python离散数据傅里叶变换公式_离散傅里叶变换笔记相关推荐

  1. sin的傅里叶变换公式_「傅里叶变换公式」傅里叶变换的解释与推导 - seo实验室...

    傅里叶变换公式 http://blog.csdn.net/linmingan/article/details/51194187 注:文章中有一两处公式错误,(1)辅助角公式中求幅值应该是平方开根号,( ...

  2. sin傅里叶变换公式_全面解析傅立叶变换(非常详细)

    前言 第一部分. DFT 第一章.傅立叶变换的由来 第二章.实数形式离散傅立叶变换(Real DFT) 从头到尾彻底理解傅里叶变换算法.下 第三章.复数 第四章.复数形式离散傅立叶变换 前言:&quo ...

  3. python随机数据随概率分布_概率分布及其Python实现

    一.学习概率分布有什么用?很多现实中的分布都来自几种概率分布.对个人生活和工作选择非常有帮助. 知道某件事发生的概率对我们作出数据分析决策很有帮助.有时候计算概率很简单,有时候计算概率很复杂,概率分布 ...

  4. 以下哪个不是python财经数据接口工具_这7种Python的全新玩法,大部分人都不知道!...

    Python第三方模块众多,下面我介绍一些比较实用而又有趣的模块,主要分为爬虫.数据处理.可视化.机器学习.神经网络.股票财经.游戏这7个方面,主要内容如下: 创一个小群,供大家学习交流聊天 如果有对 ...

  5. python大数据培训机构_学大数据开发需要学习python吗

    大数据现在互联网火热的一个名词,而和大数据关键词最紧密的相信就是Java和python了,在一年以前,Java大数据可能是很多培训机构的宣传标语.而到了2018年,python大数据则成为了潮流,无论 ...

  6. python 逻辑回归 复杂抽样_【课程笔记】《Udacity数据分析(入门)》「纳米学位」——第 4 部分:统计学 ——By Tensor麻麻麻...

    第4部分:统计学 仅作为学习记录作为参考 统计学 - 总共分为16部分: 1.描述统计学 - 第一部分(选修) 2.描述统计学 - 第二部分(选修) 3.录取案例分析 4.概率 5.二项分布 6.条件 ...

  7. 2022年Python+大数据学习路线图,源码笔记,最优学习资源

    任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标.Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮 ...

  8. python 离散数据时间序列图_每个人都学的会的数据分析

    数据分析已经成为数据时代各行各业突破各自行业发展瓶颈的最有效手段,无论是公司职员还是个体商户或大公司管理者,都需要有数据分析的能力.很多人认为数据分析能力就是对数据进行描述和做出漂亮的统计图形的能力, ...

  9. 傅里叶变换公式_理解1维傅里叶变换

    上个学期,学习了信号与系统.虽然知道了傅里叶变换的作用以及如何使用.但是对于它的本质,也就是FT是如何探测到频率的尚有疑惑. 而恰好在知乎上发现了一些很好的回答.故将这些回答整理在这. 感性理解1维F ...

最新文章

  1. LeetCode4. Median of Two Sorted Arrays(二分法)
  2. 如何搭建低延时、交互式的在线教育平台?(内附视频回放)
  3. vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具
  4. Python类中公开方法、私有方法和特殊方法的继承原理
  5. 配置devtools热部署
  6. MyBatis 别名标签 sql的复用
  7. SQLyog——下载2058问题
  8. 微软应用商店_微软商店那些好用的UWP软件!你不看这篇文章会后悔的!超级实用! | APP杂货店...
  9. 使用 Iperf 测试软路由性能
  10. mac 安装 android 系统,苹果电脑Mac系统如何安装Android模拟器?
  11. 神经元模型图手工制作,神经元模型图手工模型
  12. 江苏小高考计算机知识点,江苏文科小高考哪几门 考试内容是什么
  13. 两年3亿用户,淘特跑出中国电商“加速度”
  14. 免费外链资源列表汇总
  15. RV1126RV1109 buildroot 增加QT程序
  16. NDK 图像处理遇到的相关问题
  17. Scratch加减法
  18. Python入门-if语句
  19. char*cstr 转 ushort
  20. 如何进行BI工具的选型?2019必看的商业智能工具选型参考

热门文章

  1. android之桌面悬浮框
  2. 恭喜,他们终于复婚,网友:我又相信爱情了
  3. 王牌战士服务器维护什么时候好,王牌战士最佳灵敏度怎么设置
  4. CPU占用100%的原因及解决办法
  5. win10安全模式都进不去_win10四种进入安全模式的方法,你知道几种?我们一起来了解一下...
  6. java电费计收_12月起,电费每月一缴,记得及时缴费哦!
  7. 安卓手机如何设置静态IP?
  8. Cesium 点击绘制线/折线(动态绘制线/折线)
  9. 不用计算机时不必关机,笔记本电脑不用时要关机吗
  10. 合婚算法之用JAVA实现简单级别的神煞合婚法