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.mzph.cn/diannao/51101.shtml

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

相关文章

03。正式拿捏ArkTS语言第一天

1, 打印日志命令 : console.log() 2, 三种基本数据类型: number 数字类型 (数字) string 字符串类型(例如:“我是字符串”) boolean 布尔类型 (true 或者 false) ***…

【C语言报错已解决】Use of Uninitialized Variable

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言: 在编程中,未初始化的变量是一个常见的问题,它可能导致程序的行为变得不可预测。未初…

Matlab更换主题颜色附代码

解压后参考记录本教程 GitHub - scottclowe/matlab-schemer: Apply and save color schemes in MATLAB with ease. 本博客绑定了资源

【前端 08】简单学习js字符串

JavaScript中的String对象详解 在JavaScript中,字符串(String)是一种非常基础且常用的数据类型,用于表示文本数据。虽然JavaScript中的字符串是原始数据类型,但它们的行为类似于对象,因为JavaScript为字符…

windows 安装 Linux 子系统 Ubuntu,并编译安装nginx

1. 安装Ubuntu 首先可以在 Microsoft Store 自行搜索安装 Ubuntu,个人建议安装 22 版本的即可。Ubuntu安装完成后,以管理员身份打开CMD,运行如下命令: wsl --install 此时打开Ubuntu已经可以正常使用了。 2. 安装C/C编译器 对于…

java算法day25

java算法day25 广度优先搜索岛屿数量深搜岛屿数量广搜 广度优先搜索 核心:从起点出发,以起始点为中心一圈一圈进行搜索,一旦遇到终点,记录之前走过的节点就是一条最短路。搜索的方式是上下左右 一张图说明白模拟过程&#xff1…

【C语言】深入探讨数组传参

一、数组传参简介 在C语言中,数组传参是一个常见的操作,尤其是在处理大量数据或需要多次访问相同数据集时。理解如何传递数组以及这些方法之间的差异是编写高效和安全代码的关键。在这篇博客中,我们将详细讨论C语言中数组传参的几种常见方法&…

rhce THE homework of first

ssh远程免密登录成功 下载httpd和nginx 关闭防火墙 查看selinux的状态 为服务器配置ip 填充网站的内容 添加服务器配置

Python爬虫入门01:在Chrome浏览器轻松抓包

文章目录 爬虫基本概念爬虫定义爬虫工作原理爬虫流程爬虫类型爬虫面临的挑战 使用Chrome浏览器抓包查看网页HTML代码查看HTTP请求请求头(Request Header)服务器响应抓包的意义 爬虫基本概念 爬虫定义 爬虫(Web Crawler 或 Spider&#xff0…

MongoDB教程(二十三):关于MongoDB自增机制

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…

数字孪生在奥运会上的应用

数字孪生是一种精确的虚拟空间表示,能够实时模拟场馆内的各种变化或场景。国际奥委会正在确定高价值的应用案例和技术要求,将应用案例分为六个主要领域:场馆规划、利益相关者支持与参与、操作准备、粉丝体验、遗产和运营效率。每个案例将基于…

【前端 13】Vue快速入门

Vue快速入门 在现代Web开发中,尽管通过HTML、CSS和JavaScript我们能够构建出美观且功能丰富的页面,但随着项目规模的增大,这种传统的开发方式在效率上逐渐显得力不从心。为了提高开发效率,前端开发者们引入了多种框架和库&#x…

MySQL环境的配置文件json

突然了解到,使用json文件去进行环境的配置,这样修改参数的时候就只需要去改json文件中的内容,不需要去修改代码中的内容,其他人的MySQL和我的MySQL也不同,这时其他人只需要修改json文件中的内容,清晰明了&a…

基于STC8H系列单片机的定时器系统

基于STC8H系列单片机的定时器系统 STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC…

Apollo使用(3):分布式docker部署

Apollo 1.7.0版本开始会默认上传Docker镜像到Docker Hub,可以按照如下步骤获取 一、获取镜像 1、Apollo Config Service 获取镜像 docker pull apolloconfig/apollo-configservice:${version} 我事先下载过该镜像,所以跳过该步骤。 2、Apollo Admin S…

计算机网络-配置路由器ACL(访问控制列表)

配置访问控制列表ACL 拓扑结构 拓扑结构如下: 要配置一个ACL,禁止PC0访问PC3,禁止PC4访问PC0,其它正常。 配置Router0 配置接口IP地址: interface fastethernet 0/0 ip address 192.168.1.1 255.255.255.0 no shu…

第三部分 图论 - 第2章 最小生成树

定义 首先我们先了解下生成树的定义: 无向图中,一个连通图的最小连通子图称作该图的生成树(不能带环,保持连通,但边要尽可能的少)。 有n个顶点的连通图的生成树有n个顶点和n-1条边。 那么最小生成树和生成…

决策树 和 集成学习、随机森林

决策树是非参数学习算法,可以解决分类问题,天然可以解决多分类问题(不同于逻辑回归或者SVM,需要通过OVR,OVO的方法),也可以解决回归问题,甚至是多输出任务,并且决策树有非…

国内NAT服务器docker方式搭建rustdesk服务

前言 如果遇到10054,就不要设置id服务器!!! 由于遇到大带宽,但是又贵,所以就NAT的啦,但是只有ipv4共享和一个ipv6,带宽50MB(活动免费会升130MB~) https://bigchick.xyz/aff.php?aff322 月付-5 循环 :CM-CQ-Monthly-5 年付-60循环:CM-CQ-Annually-60官方…

数据结构第三讲:单链表的实现

数据结构第三讲:单链表的实现 1.什么是单链表2. 节点3.单链表的实现3.1节点的结构3.2打印单链表3.3申请一个新节点3.4单链表尾部插入3.5单链表头部插入3.6单链表的尾部删除3.7单链表头部删除3.8查找3.9在指定位置之前插入数据3.10在指定位置之后插入数据3.11删除pos…