Matlab编程资源库(10)离散傅立叶变换

一、离散傅立叶变换算法简要

  1. 给定一个N点的离散信号序列x(n),其中n表示时刻,n = 0, 1, 2, ..., N-1。

  2. 定义离散傅立叶变换的频域序列X(k),其中k表示频率,k = 0, 1, 2, ..., N-1。

  3. 通过以下公式计算每个频率对应的复数值:

     X(k) = Σx(n) * exp(-j * 2π * kn / N),其中j表示虚数单位exp表示指数函数

    上述公式中的指数函数是旋转因子,它表示每个频率对应的旋转角度。

  4. 重复步骤3,计算所有频率对应的复数值,得到频域序列X(k)。

  5. 最终得到的频域序列X(k)表示了原始信号在不同频率上的能量分布。

二、离散傅立叶变换的实现

一维离散傅立叶变换函数 ,其调用格式与功 能为:
 (1) fft(X):返回向量 X 的离散傅立叶变换。设 X 的长度 ( 即元素个数 ) N ,若 N 2 的幂 次,则为以 2 为基数的快速傅立叶变换,否 则为运算速度很慢的非 2 幂次的算法。对于 矩阵 X fft(X) 应用于矩阵的每一列。
(2) fft(X,N) :计算 N 点离散傅立叶变换。它限 定向量的长度为 N ,若 X 的长度小于 N ,则 不足部分补上零;若大于 N ,则删去超出 N 的那些元素。对于矩阵 X ,它同样应用于矩 阵的每一列,只是限定了向量的长度为 N
(3) fft(X,[],dim) fft(X,N,dim) :这是对于矩 阵而言的函数调用格式,前者的功能与 FFT(X) 基本相同,而后者则与 FFT(X,N) 本相同。只是当参数 dim=1 时,该函数作用 X 的每一列;当 dim=2 时,则作用于 X 每一行。 值得一提的是,当已知给出的样本数 N0 不是 2 的幂次时,可以取一个 N 使它大于 N0 且是 2 的幂次,然后利用函数格式 fft(X,N) fft(X,N,dim) 便可进行快速傅立叶变换。这样,计算速度将大大加快。 相应地,一维离散傅立叶 逆变换 函数是 ifft ifft(F) 返回 F 的一维离散傅立叶逆变换; ifft(F,N) N 点逆变换; ifft(F,[],dim) ifft(F,N,dim) 则由 N dim 确定逆变换的点数或操作方向。
6-15 给定数学函数 x(t)=12sin(2 π× 10t+ π /4)+5cos(2 π× 40t)
N=128 ,试对 t 0~1 秒采样,用 fft 作快速傅 立叶变换,绘制相应的振幅 - 频率图。
0~1 秒时间范围内采样 128 点,从而可以确 定采样周期和采样频率。由于离散傅立叶 变换时的下标应是从 0 N-1 ,故在实际应 用时下标应该前移 1 。又考虑到对离散傅立 叶变换来说,其振幅 | F(k)| 是关于 N/2 对称 的,故只须使 k 0 N/2 即可。
程序如下:
N=128; % 采样点数
T=1; % 采样时间终点
t=linspace(0,T,N); % 给出N个采样时间ti(I=1:N)
x=12*sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t); % 求各采样点 样本值x
dt=t(2)-t(1); % 采样周期
f=1/dt; % 采样频率(Hz)
X=fft(x); % 计算x的快速傅立叶变换X
F=X(1:N/2+1); % F(k)=X(k)(k=1:N/2+1)
f=f*(0:N/2)/N; % 使频率轴f从零开始
plot(f,abs(F),'-*') % 绘制振幅-频率图
xlabel('Frequency');
ylabel('|F(k)|')

运行结果 :

 结语   

一口吃不成胖子

但胖子却是一口一口吃来的

!!!

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

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

相关文章

生鲜云订单零售系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商品分类管理,商品信息管理,订单评价管理,订单管理,系统管理 微信端账号功能包括:系统首页,商品信息&#…

[Unity] ShaderGraph实现镜头加速线/残血效果 URP

效果如下所示:残血状态时,画面会压暗角,并出现速度线营造紧迫感。 使用到的素材如下,换别的当然也可以。[这是张白色的png放射图,并非皇帝的新图hhh] 这个效果的实现逻辑,其实就是利用time向圆心做透明度的…

2024经济师考试报名『注册流程』图解!

⏰报名时间:8月12日—9月11日 ☑️报名注册流程 1、经济师考试报名注册网站:中国人事考试网. 2、点击考生登录栏目中的【新用户注册】按钮,进行注册。 3、进入用户注册界面,填写注册信息。 4、填写完毕确认无误后点击【提交】&…

Unity UGUI 之 Mask

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是遮罩 遮罩是一…

深度解读大语言模型中的Transformer架构

一、Transformer的诞生背景 传统的循环神经网络(RNN)和长短期记忆网络(LSTM)在处理自然语言时存在诸多局限性。RNN 由于其递归的结构,在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…

学习react-登录状态验证

1.创建三个页面LoginPage, HomePage,NotFoundPage用于Router 创建LoginPage.tsx用于做登录页面 // LoginPage.tsx const LoginPage (props:LoginProp) > {const navigate useNavigate();return( <h1 onClick{ ()>{navigate("/");}}>Hello Login, {pr…

02 Go语言操作MySQL基础教程_20240729 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728 基础不好的同学每节课的代码最好配合视频进行阅读和学习&#xff0c;如果基础比较扎实&#xff0c;则阅读本教程巩固一下相…

微信小游戏之 三消(一)

首先设定一下 单个 方块 cell 类&#xff1a; 类定义和属性 init 方法 用于初始化方块&#xff0c;接收游戏实例、数据、宽度、道具类型和位置。 onWarning 方法 设置警告精灵的帧&#xff0c;并播放闪烁动作&#xff0c;用于显示方块的警告状态。 grow 方法 根据传入的方向…

21.发布确认模式-高级

问题 生产环境中由于一些不明原因&#xff0c;导致rabbitmq重启&#xff0c;在重启的期间生产者消息投递失败&#xff0c;导致消息丢失&#xff0c;需要手动处理恢复。那么如何才能进行rabbitmq的消息可靠性投递&#xff1f;特别是在极端的情况&#xff0c;rabbitmq集群不可用…

文件操作相关的精讲

目录&#xff1a; 思维导图 一. 文件定义 二. 文件的打开和关闭 三. 文件的顺序读写操作 四. 文件的随机读写操作 五. 文本文件和二进制文件 六. 文件读取结束的判断 七.文件缓冲区 思维导图&#xff1a; 一. 文件定义 1.文件定义 C语言中&#xff0c;文件是指一组相…

Vue3可媲美Element Plus Tree组件实战之移除节点

Element Plus Tree自定义节点内容示例中介绍了移除节点的用法&#xff0c;个人觉得作为提供给用户API&#xff0c;应该遵循迪米特法则&#xff0c;把功能实现的细节封装在组件内部&#xff0c;而提供给用户最简单的操作方式&#xff0c;同时在此基础上支持用户的扩展。 因此&a…

接口测试支持IDEA插件一键同步API、新增思维导图快速评审测试用例,MeterSphere开源持续测试工具v3.1.0版本发布

2024年7月29日&#xff0c;MeterSphere开源持续测试工具正式发布v3.1.0版本。 在这一版本中&#xff0c;接口测试方面&#xff0c;支持通过IDEA插件一键同步API至MeterSphere&#xff1b;测试管理方面&#xff0c;“测试用例”模块新增通过思维导图模式快捷评审测试用例。在“…

挑战房市预测领头羊:KNN vs. 决策树 vs. 线性回归

挑战房市预测领头羊&#xff08;KNN&#xff0c;决策树&#xff0c;线性回归&#xff09; 1. 介绍1.1 K最近邻&#xff08;KNN&#xff09;&#xff1a;与邻居的友谊1.1.1 KNN的基础1.1.2 KNN的运作机制1.1.3 KNN的优缺点 1.2 决策树&#xff1a;解码房价的逻辑树1.2.1 决策树的…

CSS实现文本溢出处理

1.单行文本溢出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

总结——TI_音频信号分析仪

一、简介 设备&#xff1a;MSPM0G3507 库&#xff1a;CMSIS-DSP TI 数据分析&#xff1a;FFT 软件&#xff1a;CCS CLion MATLAB 目的&#xff1a;对音频信号进行采样&#xff08;滤波偏置处理&#xff09;&#xff0c;通过FFT获取信号的频率成分&am…

【Vue3】watchEffect

【Vue3】watchEffect 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文…

了解Selenium中的WebElement

Selenium中到处都使用WebElement来执行各种操作。什么是WebElement&#xff1f;这篇文章将详细讨论WebElement。 Selenium中的WebElement是一个表示网站HTML元素的Java接口。HTML元素包含一个开始标记和一个结束标记&#xff0c;内容位于这两个标记之间。 HTML元素的重命名 …

C#插件 调用存储过程(输出参数类型)

存储过程 CREATE PROCEDURE [dbo].[GetSum]num1 INT,num2 INT,result INT OUTPUT AS BEGINselect result num1 num2 END C#代码 using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Util; using System; using System.…

放大电路总结

补充: 只有直流移动时才有Rbe动态等效电阻 从RsUs看进去,实际上不管接了什么东西都能够看成是一个Ri(输入电阻) Ri Ui/Ii Rb//Rbe Ui/Us Ri/(RiRs) Aus (Uo/Ui)*(Ui/Us) Au *Ri/(RiRs) 当前面是一个电压源的信号 我们就需要输入电阻更大 Ro--->输出电阻--->将…

基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节

目录 1、视频播放器原理 2、FFMPEG解码 2.1 FFMPEG库 2.2、数据类型 2.3、解码 2.3.1、接口函数 2.3.2、解码流程 3、SDL播放 3.1、接口函数 3.2、视频播放 3.3、音频播放 4、音视频的同步 4.1、获取音频的播放时间戳 4.2、获取当前视频帧时间戳 4.3、获取视…