0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python快速变换傅里叶(FFT)过程实例分析

0BFC_eet_china 2017-11-29 15:03 次阅读

这里做一下记录,关于FFT就不做介绍了,直接贴上代码,有详细注释的了:import numpy as npfrom scipy.fftpack import fft,ifftimport matplotlib.pyplot as pltimport seaborn#采样点选择1400个,因为设置的信号频率分量最高为600赫兹,根据采样定理知采样频率要大于信号频率2倍,所以这里设置采样频率为1400赫兹(即一秒内有1400个采样点,一样意思的)x=np.linspace(0,1,1400) #设置需要采样的信号,频率分量有180,390和600y=7*np.sin(2*np.pi*180*x) + 2.8*np.sin(2*np.pi*390*x)+5.1*np.sin(2*np.pi*600*x)yy=fft(y) #快速傅里叶变换yreal = yy.real # 获取实数部分yimag = yy.imag # 获取虚数部分yf=abs(fft(y)) # 取绝对值yf1=abs(fft(y))/len(x) #归一化处理yf2 = yf1[range(int(len(x)/2))] #由于对称性,只取一半区间xf = np.arange(len(y)) # 频率xf1 = xfxf2 = xf[range(int(len(x)/2))] #取一半区间plt.subplot(221)plt.plot(x[0:50],y[0:50]) plt.title('Original wave')plt.subplot(222)plt.plot(xf,yf,'r')plt.title('FFT of Mixed wave(two sides frequency range)',fontsize=7,color='#7A378B') #注意这里的颜色可以查询颜色代码表plt.subplot(223)plt.plot(xf1,yf1,'g')plt.title('FFT of Mixed wave(normalization)',fontsize=9,color='r')plt.subplot(224)plt.plot(xf2,yf2,'b')plt.title('FFT of Mixed wave)',fontsize=10,color='#F08080')plt.show()
结果:

再添加一个简单的例子

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npimport seabornFs = 150.0; # sampling rate采样率Ts = 1.0/Fs; # sampling interval 采样区间t = np.arange(0,1,Ts) # time vector,这里Ts也是步长ff = 25; # frequency of the signaly = np.sin(2*np.pi*ff*t)n = len(y) # length of the signalk = np.arange(n)T = n/Fsfrq = k/T # two sides frequency rangefrq1 = frq[range(int(n/2))] # one side frequency rangeYY = np.fft.fft(y) # 未归一化Y = np.fft.fft(y)/n # fft computing and normalization 归一化Y1 = Y[range(int(n/2))]fig, ax = plt.subplots(4, 1)ax[0].plot(t,y)ax[0].set_xlabel('Time')ax[0].set_ylabel('Amplitude')ax[1].plot(frq,abs(YY),'r') # plotting the spectrumax[1].set_xlabel('Freq (Hz)')ax[1].set_ylabel('|Y(freq)|')ax[2].plot(frq,abs(Y),'G') # plotting the spectrumax[2].set_xlabel('Freq (Hz)')ax[2].set_ylabel('|Y(freq)|')ax[3].plot(frq1,abs(Y1),'B') # plotting the spectrumax[3].set_xlabel('Freq (Hz)')ax[3].set_ylabel('|Y(freq)|')plt.show()

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FFT
    FFT
    +关注

    关注

    15

    文章

    425

    浏览量

    58681
  • python
    +关注

    关注

    52

    文章

    4680

    浏览量

    83495

原文标题:Python实现快速傅里叶变换(FFT)

文章出处:【微信号:eet-china,微信公众号:电子工程专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    漫画分析——(日)涉谷道雄

    ` 本帖最后由 eehome 于 2013-1-5 09:47 编辑 漫画分析`
    发表于 12-29 08:48

    关于图像的频域滤波后的变换,大家进来看看。...

    完成了,但是做变换还原图像的时候出问题了。这是只对滤波后图像的模做
    发表于 11-20 00:28

    的一些总结

    最近在学习傅里叶变换应用在电网上的谐波分析,于是就看了一些资料,相信想要把应用在工程上的工程师很多,但是有些时候被一些数学公司搞蒙了,
    发表于 10-06 11:08

    【安富莱——DSP教程】第23章 傅里叶变换

    的基础知识进行必要的介绍,没有这些基础知识的话,后面学习FFT快速傅里叶变换)时会比较困难。本章节的内容主要来自百度百科,wiki百科以及网络和书籍中整理的一些资料。 23.1
    发表于 06-25 09:58

    【创龙TMS320C6748开发板试用】 + FFT变换分析与测试

    ,我们就说FFT的性能越优异。下面来分析广州创龙公司提供的TMS320C6748的FFT例程,例程里面包括快速傅里叶变换
    发表于 10-25 21:01

    第24章 快速傅里叶变换原理(FFT

    )是数字信号处理最重要的基石之一,也是对信号进行分析和处理时最常用的工具之一。在200多年前法国数学家、物理学家提出后来以他名字命名的
    发表于 09-27 08:09

    让你在不看任何数学公式的情况下理解分析

    错过这篇文章,可能你这辈子不懂什么叫傅里叶变换了这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解分析
    发表于 09-27 12:40

    变换

    LABVIEW是怎样进行非周期波形的变换的,各路大神飘过的,求。在线急等。
    发表于 10-21 14:59

    周期信号的频谱分析——级数

    周期信号的频谱分析——级数.ppt
    发表于 10-03 23:05

    典型周期信号的级数

    典型周期信号的级数.ppt
    发表于 10-03 23:12

    周期信号的频谱分析——级数.zip

    周期信号的频谱分析——级数.zip
    发表于 10-04 11:34

    级数

    `法国学者在研究热力学时提出任意周期的周期模拟信号都可以由其成谐波关系的正弦函数合成x(t) = sum(Ak*exp(j*kwot)),Ak为k次谐波系数.假设某一周期为T的模拟信号x(t
    发表于 01-26 20:52

    图像频率域分析之傅里叶变换

    文章目录傅里叶变换基础级数积分傅里叶
    发表于 05-22 07:41

    关于变化的几个专业定义问题

    分析中频谱一样时,对应的波形是否一样?为什么?
    发表于 12-29 22:29

    在STM32中如何利用dsp库进行快速计算

    电力系统中往往掺杂谐波,而FFT可以将谐波检测出来,具有较大的实用价值。今天主要讲一下在STM32中如何利用dsp库进行快速计算,从而
    发表于 12-15 07:49