快速傅里叶变换FFT在MATLAB中的实现

news/2024/4/28 12:07:53/文章来源:https://blog.csdn.net/m0_58086930/article/details/133845371

一、FFT的由来

首先,为什么要进行傅里叶变换?将时域的信号变换到频域的正弦信号,正弦比原信号更简单,且正弦函数很早就被充分地研究,处理正弦信号比处理原信号更简单。正弦信号的频率保持性:输入为正弦信号,输出仍是正弦信号,幅度和相位可能发生变化,但频率与原信号保持一致,只有正弦信号才拥有这样的性质。

对于傅里叶变换的类型:非周期连续信号采用傅里叶变化;周期连续信号采用傅里叶级数;非周期连续离散信号采用离散时间傅里叶变换;周期离散信号采用离散傅里叶级数。 

四种信号均为 (‐∞,+∞) 上的无穷信号,而计算机只能处理离散的、有限长度的信号。四种傅里叶变换总结如下表所示。

FT、FS、DTFT,至少都有一个域不是离散的,计算机无法处理;DFS满足时域和频率离散的要求,但其时域为无穷长的周期序列;通过对DFS的推导,得到适合计算机计算的离散傅里叶变换 (DFT)。

从离散傅里叶级数 (DFS) 到离散傅里叶变换 (DFT),周期序列虽为无穷长序列,但是只要知道一个周期的内容,便可知其全貌。因此,周期序列实际上只有N个样值有信息,通过推导可得到DFT、时域和频域 (DFT) 上的有限长序列,可以用来“代表”周期序列,DFT在时域和频域上均离散,且为有限长序列,可以用计算机进行处理。

DFT虽好,但是其计算的次数太多,不利于大数据量的计算。FFT是DFT的快速算法可以节省大量的计算时间,其本质仍然是DFT。

二、MATLAB中实现FFT 的计算

MATLAB傅里叶命令有两种:

  • Yfft(x) ,其中,x 为一个序列(向量),存放采集信号的数据;

  • 另外一种Yfft(x,n),x 的定义同上,n 定义计算数据的个数,如果大于的长度,在x 的末尾添加0,使得的长度等于n。如果n小于x的长度,截取中的前n 个数来进行计算。Y 返回fft 的结果,为一个复数序列(向量),建议采用上一种格式的用法,并且保证 x 的个数为偶数。

FFT结果的数据长度:时域个点,频域为N/2+1个点;轴频率点的设置:采样频率为Fs 时,频谱图的最高频率为Fs/2(参照采样定理)。综合上述两点,x 轴的频率点为 (0:1:N/2)*Fs/N

现对某一时域数据为例进行MATLAB傅里叶变换:

1. 绘制时域信号

lear;clc;closealla=textread('C:\Users\Administrator\Desktop\matlab\FFT\TIME_X.txt'); %读取时域数据y=a(:,2); %读取时域数据Fs=6400; %采集频率T=1/Fs; %采集时间间隔N=length(y); %采集信号的长度t=(0:1:N-1)*T; %定义整个采集时间点t=t';  %转置成列向量figureplot(t,y)xlabel('时间')ylabel('信号值')title('时域信号')

2. fft变换

Y=fft(y); %Y为fft变换结果,复数向量Y=Y(1:N/2+1); %只看变换结果的一半即可A=abs(Y); %复数的幅值(模)f=(0:1:N/2)*Fs/N; %生成频率范围f=f'; %转置成列向量

 3. 幅值修正

A_adj=zeros(N/2+1,1);A_adj(1)=A(1)/N; %频率为0的位置A_adj(end)=A(end)/N; %频率为Fs/2的位置A_adj(2:end-1)=2*A(2:end-1)/N;

4. 绘制频率幅值图和频谱相位图

figuresubplot(2,1,1)plot(f,A_adj)xlabel('频率(Hz)')ylabel('幅值(修正后)')title('FFT变换幅值图')gridonsubplot(2,1,2)phase_angle=angle(Y); %angle函数的返回结果为弧度phase_angle=rad2deg(phase_angle);plot(f,phase_angle)xlabel('频率(Hz)')ylabel('相位角(degree)')title('FFT变换相位图')grid on

三、MATLAB中FFT计算和商业软件LMS Test.lab中FFT计算对比

相同的时域数据,利用商业软件LMS Test.lab进行FFT计算,计算结果如下图所示。

将matlab计算得频谱曲线和LMSTest.lab计算得频谱曲线放在同一图中对比,如下图所示。两种计算方式几乎完全重合,互相验证了计算方式的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_372314.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电力物联网关智能通讯管理机-安科瑞黄安南

众所周知,网关应用于各种行业的终端设备的数据采集与数据分析,然后去实现设备的监测、控制、计算,为系统与设备之间建立通讯联系,达到双向的数据通讯。 网关可以实时监测并及时发现异常数据,同时自身根据用户规则进行…

微信小程序引入阿里巴巴iconfont图标并使用

介绍 在小程序里,使用阿里巴巴的图标,如下所示: 使用方式 搜索自己需要的图标,然后将需要用到的图标加入购物车,如下图所示: 去右上角,点击购物车按钮;这里第一次使用,会有三个提…

图纸管理制度、技术部图纸管理制度

图纸管理制度 1、技术部必须做图纸领用及归还记录,到期未还者,根据记录及时追收 2、技术部根据管理部每天公布的缺勤公告,确定领图者的合法性,并对其负责 3、图纸损坏或丢失的,追究相关责任人的绩效分数,…

软件测试定位bug方法+定位案例(详解)

1、问题bug定位技巧 首先,作为开发也好,测试也好,定位问题有一个总的思路,而这个思路是和数据的走向一致的。 大致是这样: 用户层面问题 -> Web页面/软件界面 -> 中间件 -> 后端服务 -> 代码 -> 数据…

SpringBoot整合阿里云OSS、天翼云OSS、MinIO对象存储

大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 对象存储是什么&#xff1f…

idea禁用双击ctrl

Run anything | IntelliJ IDEA Documentation Disable double modifier key shortcuts

Adaptive Homogeneity-DirectedDemosaicing Algorithm

Abstract 经济高效的数码相机使用单图像传感器,将红色、绿色和蓝色滤色镜的交替图案应用到每个像素位置。通过估计每个颜色平面中缺失的像素分量来重建彩色图像的完整三色表示的方法称为去马赛克算法。本文提出了通常与结合二维 (2-D) 方向插值的去马赛克算法相关的…

密码管理的艺术:数据库存储密码的策略、技术和工具

最近接手公司一个之前的服务,竟然发现用户密码是明文存储在数据库中! 说实话还是有点吃惊的,这可不兴学 CSDN 呀,至少也得搞个 MD5 存一存吧。 不过 MD5 其实也没啥用,今天我们就来盘盘密码这种敏感信息该如何存储。…

Goland Cannot use ‘err‘ (type error) as the type any

问题描述: 用Goland写代码的时候,使用panic总是报错,官方用法也是报错,最后找到官方回复的链接,https://youtrack.jetbrains.com/issue/GO-12179/Cannot-use-err-type-error-as-the-type-any 问题解决方式&#xff1…

便利店小程序可以做哪些营销活动呢

在当今这个数字化时代,微信小程序已经成为了人们日常生活的一部分。对于便利店来说,拥有一个优秀的小程序不仅可以提高销售,还可以扩大品牌影响力,增加客户粘性。本文将探讨便利店小程序可以做什么样的营销活动,如何利…

Redis 排障:你永远不知道告警和下班,谁先到来?

01 第一个重点,服务排障的基本方法 在岁月静好的一天,正当笔者准备下班工作的时候,突然,告警出现了! 嗯,又是一到下班就会告警! 仔细一看,原来是数据整体处理时间的慢了。 既然慢了…

2023年全球新能源云母材料市场发展展望分析:储能云母市场规模快速增长[图]

云母作为电气设备的基础材料,下游应用领域涉及高温冶炼、电力等传统行业,并在近几年逐步扩展到新能源汽车、电化学储能等新兴行业。2022年,全球云母材料市场规模保持稳定增长至180.0亿元,期间年复合增长率约为13.2%。预计未来&…

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划(三) 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程(超详细)

NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程 文章目录 NodeMCU ESP8266 基于Arduino IDE的串口图形化调试教程前言Serial Plotter测试前期准备打开工具方法 1方法 2 测试代码 总结 前言 在嵌入式的开发过程中,我们经常会采集一些传感器的数据&#xff0c…

iCloud涨价不用慌!学会使用群晖生态将本地SSD“上云”

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是想使用群晖生态软件,就必须要在服务端安装群晖系统,具体如何安装群晖虚拟机请参考: 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

本地PHP搭建简单Imagewheel私人云图床,在外远程访问

🔥博客主页: 小羊失眠啦 🔖系列专栏: C语言、Linux 🌥️每日语录:追逐影子的人,自己就是影子。 ❤️感谢大家点赞👍收藏⭐评论✍️ 1.前言 云存储在前几年风头无两,云存…

uniapp安卓 华为商店 vivo商店 oppo 小米 上架问题 Android中怎么才能不提前申请权限

问题描述 提交 小米 oppo 市场审核失败,原因是提前向用户申请开启通讯录、定位、短信、录音、相机和日历等权限。 解决方案: 是否有使用 READ_PHONE_STATE 权限,如果有使用 oaid 代替;是否有使用第三方 SDK,如果有关…

外部统一设置了::-webkit-scrollbar { display: none; }如何单独给特定元素开启滚动条设置样式-web页面滚动条样式设置

如果你在外部统一设置了​​::-webkit-scrollbar { display: none; }​​​来隐藏滚动条,但是想要在​​.lever​​元素中单独开启滚动条的样式,你可以使用CSS的级联选择器来覆盖外部样式。 以下是一个示例,展示如何给​​.lever​​单独开启…

什么是实验室超声消泡机?工作原理是怎样的?

超声波消泡设备也叫超声波脱气机、超声波消泡机、超声波消泡器。超声波在液体中产生空化作用,使得液体中溶解的气体(如:空气)不断凝聚,成为很细小的气泡,最后成为球状气泡脱离液体表面,从而达到液体脱气、液体消泡的目的。 实验室超声消泡机工作原理: …

13年测试老鸟,性能测试内存泄露——案例分析(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、环境配置 1&a…