当前位置: 首页 > news >正文

MATLAB——FFT(快速傅里叶变换)

基础知识
FFT即快速傅里叶变换,利用周期性和可约性,减少了DFT的运算量。常见的有按时间抽取的基2算法(DIT-FFT)按频率抽取的基2算法(DIF-FFT)。

1.利用自带函数fft进行快速傅里叶变换
若已知序列x=[4,3,2,6,7,8,9,0]x=[4,3,2,6,7,8,9,0]x=[4,3,2,6,7,8,9,0],求X(k)=DFT[x(n)]X(k)=DFT[x(n)]X(k)=DFT[x(n)]
代码非常简单,只有两行

x=[4,3,2,6,7,8,9,0];
xk=fft(x)

在这里插入图片描述
一般,对MATLAB而言,要想让它显示出结果,计算的部分不要加分号。
2.绘制128点DFT的幅频图
已知信号由15Hz幅值0.5的正弦信号和40Hz幅值2的正弦信号组成,数据采样频率为100Hz,试绘制N=128点DFT的幅频图。
关于下列代码的解释

f=(0:N-1)'*fs/N;

其中(0:N-1)'是生成了一个长度为N,间隔为1的列向量转置所得到的行向量。fs/N是指频域上的频率间隔。
若N点序列x(n)(n=0,1,…,N-1)是在采样频率fs(Hz)下获得的。它的FFT也是N点序列,即X(k)(k=0,1,…,N-1),则第K点对应实际频率值为:
f=k*fs/N

clc;
fs=100;
Ts=1/fs;%采样时间间隔
N=128;
n=0:N-1;
t=n*Ts;    %x不是直接关于n的函数,因为是固定的采样时间点
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);y=fft(x,N);
f=(0:N-1)'*fs/N;
stem(f,abs(y));

运行结果
在这里插入图片描述
同时也可以可看到这个幅度谱是关于fN对称的。
3.利用FFT进行功率谱的噪声分析
已知带有测量噪声信号x(t)=sin(2πf1t)+sin(2πf2t)+2w(t)x(t)=sin(2πf1t)+sin(2πf2t)+2w(t)x(t)=sin(2πf1t)+sin(2πf2t)+2w(t) 其中f1=50Hz,f2=120Hz, w(t)为均值为零、方差为1的随机信号,采样频率为1000Hz,数据点数N=512。试绘制信号的功率谱图。
下面先介绍几个基本的函数和知识:
conj(Y)
conj(Y) 是 MATLAB 中的一个函数,表示对 Y 中的每个元素取其共轭复数。如果 Y 是一个实数数组,则返回其本身。在信号处理中,常常使用共轭复数进行频域变换的处理。
求功率
P=Y.*conj(Y)/512;
注意这里是点乘啊。
在信号处理中,功率可以表示为信号的平均能量。对于一个离散时间信号,其能量可以表示为其幅度平方的总和,即:
E=∑n=0N−1∣x[n]∣2E = \sum_{n=0}^{N-1} |x[n]|^2 E=n=0N1x[n]2
其中,NNN 是信号的抽样点数,x[n]x[n]x[n] 是信号在时刻 nnn 的采样值。这里的 ∣x[n]∣2|x[n]|^2x[n]2 表示对 x[n]x[n]x[n] 取模长平方。
如果要计算信号的平均功率,可以将其总能量除以抽样点数,即:
P=EN=1N∑n=0N−1∣x[n]∣2P = \frac{E}{N} = \frac{1}{N} \sum_{n=0}^{N-1} |x[n]|^2 P=NE=N1n=0N1x[n]2
这里的 PPP 表示信号的功率。
在代码中,YYY 表示信号的离散傅里叶变换,即频域表示,其幅度 ∣Y∣|Y|Y 表示信号在每个频率分量上的贡献。为了计算信号的功率谱,需要将 YYY 变换为其幅度平方,即 ∣Y∣2|Y|^2Y2。由于 YYY 中包含了正频率和负频率的信息,因此需要对其进行共轭操作,即将负频率部分取共轭复数,然后再与正频率部分相乘,即 Y⋅conj⁡(Y)Y \cdot \operatorname{conj}(Y)Yconj(Y)。最后将结果除以抽样点数 NNN,即可得到功率谱 PPP
P=Y⋅conj⁡(Y)NP = \frac{Y \cdot \operatorname{conj}(Y)}{N} P=NYconj(Y)
这里的 PPP 是一个长度为 NNN 的向量,表示信号在每个频率分量上的功率。
randn
andn是MATLAB中的一个函数,用于生成一个均值为0,方差为1的标准正态分布随机数。例如,可以使用以下代码生成一个大小为3x3的标准正态分布随机矩阵:
A = randn(3,3);
完整代码

clc;
t=0:0.001:0.6;%设置步进与时间区间
x=sin(2*pi*50*t)+sin(2*pi*120*t);%根据已知写出信号的表达式
noise=randn(1,length(t));%生成均值为零、方差为1的随机信号,也就是噪声
y=x+noise;%带有噪声的信号
subplot(121);
plot(t,y);fs=1000;
Y=fft(y,512);%512点的FFT
P=Y.*conj(Y)/512;%求功率
f=(0:255)*fs/256%由上面的分析可知,频谱关于奈奎斯特频率对称,所以取其中一半
subplot(122);
plot(f,P(1:256))%功率随频率的变化,即功率谱图,绘制出一半

运行结果:
在这里插入图片描述
4.序列长度和FFT的长度对信号频谱的影响
已知信号 x(t)=0.5sin(2πf1t)+2sin(2πf2t)x(t)=0.5sin(2πf1t)+2sin(2πf2t)x(t)=0.5sin(2πf1t)+2sin(2πf2t)
其中f1=15Hz,f2=40Hz,采样频率为100Hz.
在下列情况下绘制其幅频谱。
有了前面的基础,这里就比较简单了
代码

nlength=32;
nfft1=32;
nfft2=128;
fs=100;
Ts=1/fs;
n=0:nlength-1;
t=n*Ts;x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);y1=fft(x,nfft1);
f1=(0:31)*fs/32;
subplot(211);
Y1=abs(y1);
plot(f1(1:16),Y1(1:16));y2=fft(x,nfft2);
f2=(0:127)*fs/128;
subplot(212);
Y2=abs(y2);
plot(f2(1:64),Y2(1:64));

运行结果
在这里插入图片描述
结果分析
采样点数越多,其频谱越光滑。
注意
绘制图形的时候,一定要分析清楚是频谱图,还是某一个变换,其目的在于分清谁是因变量,谁是自变量。

相关文章:

MATLAB——FFT(快速傅里叶变换)

基础知识 FFT即快速傅里叶变换,利用周期性和可约性,减少了DFT的运算量。常见的有按时间抽取的基2算法(DIT-FFT)按频率抽取的基2算法(DIF-FFT)。 1.利用自带函数fft进行快速傅里叶变换 若已知序列x[4,3,2,6…...

力扣-进店却未进行过交易的顾客

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1581. 进店却未进行过交易的顾客二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行…...

一文解决vscode中借助CMake配置使用Opencv过程中的所有问题

vscode中借助CMake配置使用opencv过程中的问题 vscode编译工程的完整过程 编写好CMakeLists.txtvscode中 ctrlshiftp 选择cmake configurevscode中 ctrlshiftp 选择cmake build CMake问题 1. set OpenCV_FOUND to FALSE so package “OpenCV” is considered to be NOT FOU…...

Golang每日一练(leetDay0004)

10. 正则表达式匹配 Regular Expression Matching 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分…...

手机忘记密码解锁的 6 大软件方法

您可能想要解锁手机的原因有很多。也许您正在海外旅行并想使用当地的 SIM 卡,或者您可能刚买了一部二手手机并且需要删除之前所有者的个人数据。您可能想知道如何获得可以免费解锁任何手机的软件。Android 用户可以使用他们的指纹、面部识别或 PIN。您也可以通过快速…...

MySQL数据库的基础语法总结(1)

MySql一.数据库,数据表的基本操作1.数据库的基本操作2. 数据表的基本操作2.1 数据库的数据类型2.1.1 整数类型2.1.2 浮点数类型和定点数类型2.1.3 字符串类型2.1.4 日期与时间类型2.2 数据表的基本操作2.2.1 创建一个数据表2.2.2 查看数据表2.2.3 查看表的基本信息的MySQL指令2…...

Linux之进程创建

本节目录1.fork函数初识2.fork函数返回值3.写时拷贝1.fork函数初识 在Linux中&#xff0c;fork函数是一个非常重要的函数&#xff0c;它从已存在的进程中创建一个新进程。新进程叫做子进程&#xff0c;而原进程叫做父进程。 #include <unistd.h> pid_t fork(void); 返回…...

DCL 管理用户与权限控制

目录 DCL 查询用户 案例 权限控制 案例 DCL DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 查询用户 1、查询用户 select * from mysql.user; 2、创建用户 CREATE USER 用户名主机名 IDENTIFIED BY 密码;…...

如何使用 Python 检测和识别车牌(附 Python 代码)

文章目录创建Python环境如何在您的计算机上安装Tesseract OCR&#xff1f;技术提升磨砺您的Python技能车牌检测与识别技术用途广泛&#xff0c;可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。…...

[Python题解] CodeForces 1804 D. Accommodation

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

【设计模式】访问者模式

访问者模式 访问者模式被称为是最复杂的设计模式&#xff0c;比较难理解并且使用频率不高。 在 GoF 的《设计模式》⼀书中&#xff0c;访问者者模式(Visitor Design Pattern&#xff09;是这么定义的&#xff1a; Allows for one or more operation to be applied to a set o…...

蓝桥杯刷题冲刺 | 倒计时27天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.递增序列2.等差素数列3.七段码4.亲戚5.连通块中点的数量1.递增序列 题目 链接&#xff1a;&am…...

RV1126_python人脸识别Retinaface+MobilefaceNet

RV1126_python人脸识别Retinaface+MobilefaceNet RV1126 具备RKNN 模块支持大部分如Pytorch、MXNet、Caffe、tensorflow、keras、onnx等常见框架,而且量化部署使用RKNN-toolkit非常方便。以下介绍通过RV1126实现的人脸识别过程。 首先人脸识别需要先做人脸检测>>人脸校正…...

HBase---HBase基础语法

HBase基础语法 文章目录HBase基础语法基本操作进入 HBase 客户端命令行查看命名空间查看命名空间下的表创建命名空间创建表查看表描述禁用/启用删除表新增列族删除列族更改列族存储版本的限制put 增加数据get 查看数据get条件查询删除指定列族下的指定列删除指定行全表扫描全表…...

2023年,PMP有多少含金量呢?

其实围绕以PMP含金量为中心的这个类似的小问题我好像也已经写了不少文章了。首先我肯定PMP的含金量&#xff0c;不管有多少质疑&#xff0c;这的确是事实。因为就是看中了他的价值考的&#xff0c;并且在项目的执行上收获了很多。 ​具体的可以看我接下来谈的PMP的价值&#x…...

vue动态路由

import Vue from vue import Router from vue-router import layout from ../components/layout Vue.use(Router) // 动态路由 export const asyncRouterMap = [ { path: /home, component: layout, name: home, meta: { title: 首页, icon: el-ic…...

被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...

职场的套路防不胜防&#xff0c;一不留神就会掉坑&#xff0c;一位网友就被“骗”进了外包公司&#xff0c;他说公司非常隐蔽&#xff0c;入职一个月才发现是外包&#xff0c;但已经有了社保记录&#xff0c;简历污了&#xff0c;不知道对以后面试有影响吗&#xff1f;楼主说&a…...

华为OD机试 -租车骑绿岛(Java) | 机试题+算法思路+考点+代码解析 【2023】

租车骑绿岛 题目 部门组织绿岛骑行团建活动。租用公共双人自行车骑行,每辆自行车最多坐两人、做大载重M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入 第一行两个数字m、n,自行车限重m,代表部门总人数n。 第二行,n个数字,代表每个人的体重。体重都…...

【Java|基础篇】用思维导图理解逻辑控制

文章目录顺序结构分支结构if单分支语句if else双分支语句if else if else多分支语句switch语句循环语句for循环while循环do while循环continuebreak总结顺序结构 顺序结构是指代码按照从上往下的顺序依次执行 分支结构 选择语句是条件成立时,才会执行的语句.共有三种.分为是if…...

Go单元测试基础

Go单元测试基础1.go test工具2.单元测试函数3.go test -v/go test -run4.跳过某些测试用例5.子测试6.表格驱动测试7.并行测试8.使用工具生成测试代码9.测试覆盖率1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的&#xff0c;并不需…...

华为OD机试 -执行时长(Java) | 机试题+算法思路+考点+代码解析 【2023】

执行时长 题目 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成 输入描述: 第一个…...

互联网检测服务器

互联网检测服务器 1. 题目要求2. 试题解析1. 题目要求 题目: 为了模拟 Internet 访问测试,请搭建网卡互联网检测服务。 2. 试题解析 根据windows的官方文档,互联网检测服务有专门的域名,通过注册表可以找到检测域名字符串的写法(字符串为www.msftconnecttest.com),具体位…...

YOLO系列模型改进指南

YOLO系列模型改进指南 目前包含yolov5&#xff0c;yolov7&#xff0c;yolov8模型的众多改进方案&#xff0c;效果因数据集和参数而定&#xff0c;仅供参考。 如果需要改进模型&#xff0c;建议baseline和改进模型也不要载入预训练权重&#xff0c;不然的话&#xff0c;他们的起…...

QML- 在QML定义JavaScript资源

在QML定义JavaScript资源一、概述二、后台代码实现文件三、共享JavaScript资源(库)一、概述 QML应用程序的一部分程序逻辑可以用 JavaScript 定义。JavaScript代码可以在QML文档中内联定义&#xff0c;也可以分离到单独的 JavaScript 文件中(在QML中称为JavaScript资源)。 QML…...

php(tp框架)使用七牛云对象存储

图片文件存服务器非常占用存储带宽资源&#xff0c;且用户访问体验也不佳&#xff0c;因此使用一些第三方oss存储就很有必要了。之前lz发布了一篇tp使用阿里云oss的博文。不过阿里oss是收费的。而七牛云提供了一些免费使用额度。所以&#xff0c;这里额外补充一篇。 1.前提准备…...

八大排序算法之插入排序+希尔排序

目录 一.前言(总体简介) 关于插入排序 关于希尔排序: 二.插入排序 函数首部: 算法思路: 算法分析 插入排序代码实现: 插入排序算法的优化前奏: 三.希尔排序(缩小增量排序) 1.算法思想: 2.算法拆分解析 序列分组 分组预排序: 分组预排序的另一种实现方式: 希尔…...

蓝桥杯第十四届蓝桥杯模拟赛第三期考场应对攻略(C/C++)

这里把我的想法和思路写出来&#xff0c;恳请批评指正&#xff01; 目录 考前准备 试题1&#xff1a; 试题2&#xff1a; 试题3&#xff1a; 试题4&#xff1a; 试题5&#xff1a; 试题6&#xff1a; 试题7&#xff1a; 试题8&#xff1a; 试题9&#xff1a; 试题1…...

【数论】最大公约数、约数的个数与约数之和定理

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

第28篇:Java日期Calendar类总结(二)

目录 1、获取系统当前时间 2、获取指定日期 3、对象字段类型 4 、对象信息设置 4.1 Set设置...

【Python】字符串 - 集大成篇

目录 1. 不同语言的字符串比较 1.1 C 语言 1.2 C 语言 1.2.1 C 风格字符串 1.2.2 C 风格字符串 1.3 JAVA 1.4 Python 2. Python 字符串 2.1 方法 2.2.1 title () 2.2.2 lower () 2.2.3 upper () 2.2.4 rstrip () 2.2.5 lstrip …...

公司变更股东要交税吗/北京seo顾问服务

在上周的 Vue.js 伦敦大会上&#xff0c;Vue.js 作者尤雨溪简要介绍了 Vue 下一个主要版本要发布的内容&#xff0c;9 月 30 日&#xff0c;尤雨溪在 medium 个人博客上发布了 Vue 3.0 的开发路线&#xff0c;我们不妨看看 Vue 3.0 将会有怎样的发展。 兼容 按照尤雨溪的说法…...

关于网站建设的请示范文/山东seo推广

Loadrunner一直被业内认为是最好用的性能测试工具&#xff0c;行业大哥大, 但是用过Loadrunner的朋友都知道&#xff0c;工具功能的确牛&#xff0c;但实际使用过程中总会有一些困扰新手的问题&#xff0c;无法录制脚本&#xff0c; 如遇到Loadrunner不支持的IE版本、对Chrome、…...

安全联盟这种网站建设/佛山疫情最新情况

回到索引 http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html 设计层面&#xff1a; 分层架构分层架构是项目设计中很重要的一点&#xff0c;从根本的目的上来说就是为了职责的分离。最经典的三层架构&#xff0c;到四层五层六层&#xff0c;甚至有人开玩笑…...

网站做icp备案需要多久/广告网络营销

计算机监控系统系统功能和分层.pdf (17页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;15.9 积分计算机监控系统系统功能和分层 3.2.1 概述 电站计算机监控系统无论网络结构采用何种方式&#xff0c…...

如何申请免费域名做网站/百度销售平台怎样联系

2019独角兽企业重金招聘Python工程师标准>>> Java 在 I/O 领域一直处于劣势&#xff0c;这种情况直到 J2SE SDK 发布了 1.4 版以后才有了改观。 Java 的劣势源于其最大的优势&#xff1a;一次编写&#xff0c;到处运行。 Java 需要运行于虚拟机&#xff08;即 JVM&a…...

怎么做网站互换链接/广州百度关键词推广

前几天看了springside4的mini-web代码发现确实有不少新的东东&#xff0c;咱这次单说说Spring Data JPA吧。 引用springside4的 wiki关于对Spring Data JPA的简介 Spring Data JPA在JPA上又做了一层封装&#xff0c;只要编写接口就够了&#xff0c;不用写一行实现代码&#xff…...