基于python的快速傅里叶变换FFT(二)

基于python的快速傅里叶变换FFT(二)

基于python的快速傅里叶变换FFT(二)
本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换。

知识点
  FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。

  和傅立叶变换算法对应的是反傅立叶变换算法。该反变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。

  假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=sqrt(a*a+b*b)(某点处的幅度值An = A*(N/2))

代码实现
包的安装步骤见上一篇博客。

y = sin(2*pi*fs*t);Fs=150Hz,fs=25Hz。具体代码如下:

import matplotlib.pyplot as plt
import numpy as np
import seaborn

 

Fs = 150.0; # sampling rate采样率
Ts = 1.0/Fs; # sampling interval 采样区间
t = np.arange(0,1,Ts) # time vector,这里Ts也是步长

ff = 25; # frequency of the signal信号频率
y = np.sin(2*np.pi*ff*t)

n = len(y) # length of the signal
k = np.arange(n)
T = n/Fs
frq = k/T # two sides frequency range
frq1 = frq[range(int(n/2))] # one side frequency range

YY = 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 spectrum
ax[1].set_xlabel('Freq (Hz)')
ax[1].set_ylabel('|Y(freq)|')

ax[2].plot(frq,abs(Y),'G') # plotting the spectrum
ax[2].set_xlabel('Freq (Hz)')
ax[2].set_ylabel('|Y(freq)|')

ax[3].plot(frq1,abs(Y1),'B') # plotting the spectrum
ax[3].set_xlabel('Freq (Hz)')
ax[3].set_ylabel('|Y(freq)|')

plt.show()

 

结果

<span>基于python的快速傅里叶变换FFT(二)</span>

结果验证

某点处的幅度值An = A*(N/2),A表示原始信号的幅值,N表示采样点。
1、原函数频率fs=25Hz,所以ts=1/25=0.04。与图中第一个波形相同。
2、已知A=1,N=150,由此可以计算出An=75。与图中第二个波形相同。
3、归一化幅度值=An/n=75/100=0.75。
———————
作者:赵至柔
来源:CSDN
原文:https://blog.csdn.net/qq_39516859/article/details/79770564
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119577.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 干货满满 | 5个信号,说明你的面试基本“折了”

    干货满满 | 5个信号,说明你的面试基本“折了”

    2022年2月14日
    51
  • C语言开发简单的学生成绩管理系统(附源码)

    C语言开发简单的学生成绩管理系统(附源码)学生成绩管理系统开发语言:C语言开发工具:VisualStudio2019开发时间:2019.4.14开发者:summer@一、系统使用展示@二、系统功能@三、菜单@四、录入学生信息@五、打印学生信息@六、保存学生信息@七、读取学生信息@八、统计所有学生人数@九、查找学生信息@十、修改学生信息@十一、删除学生信息@十二、退出系统@十三、出错一、系统使用展示…

    2022年6月20日
    31
  • pycharm虚拟环境下安装第三方库_pycharm虚拟环境下安装第三方库

    pycharm虚拟环境下安装第三方库_pycharm虚拟环境下安装第三方库文章目录前言一、什么是虚拟环境?二、PyCharm中创建虚拟环境1.virualenv2.pipenv3.conda4.导入环境三、包管理总结前言我们在用python进行开发时,往往不同的项目会使用不同的环境,那么如何让不同的环境并存呢?答案是使用虚拟环境。一、什么是虚拟环境?顾名思义,虚拟环境就是一个虚拟的、从电脑中独立开辟出的环境。有点类似于虚拟机,不同的虚拟机之间即可共存,又互不影响,python中使用的虚拟环境亦如此。比如我想要一个python3.9的环境,我就可以创建一个名为py39.

    2022年8月27日
    9
  • 服务器系统tcpip.sys,tcpip.sys

    服务器系统tcpip.sys,tcpip.systcpip sys 文件说明 tcpip sys 文件是系统库中一个十分重要的文件 如果缺少了这款 tcpip sys 文件 您的设备或者电脑将会出现蓝屏或者无法开机的情况 马上下载 tcpip sys 这款文件修复吧 tcpip sys 官方版是系统中自带的文件 Tcpip sys 是微软使用的 TCP 并发连接数限制文件 默认值为 10 非常重要 很多朋友可能遇到 tcpip sys 导致的蓝屏 系统黑屏无法启动的问题

    2025年9月25日
    6
  • 计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]

    计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]全国计算机等级考试采用全国统一命题,统一考试的形式。所有科目每年开考两次。下面是小编整理的计算机考试三级数据库技术考试大纲,欢迎大家参考!基本要求1.掌握数据库技术的基本概念、原理、方法和技术。2.能够使用SQL语言实现数据库操作。3.具备数据库系统安装、配置及数据库管理与维护的基本技能。4.掌握数据库管理与维护的`基本方法。5.掌握数据库性能优化的基本方法。6.了解数据库应用系统的生命周期及其设…

    2022年6月21日
    31
  • centos7安装方法_ad9安装及激活成功教程教程

    centos7安装方法_ad9安装及激活成功教程教程本文超详细的将CentOS7的安装过程做了详细的记录,从下载镜像文件到安装CentOS再到最后的配置,手把手教学,保证能够顺利的将CentOS安装好、配置好。

    2022年10月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号