基本频谱分析

news2024/9/20 14:59:34

基本频谱分析

傅里叶变换是用于对时域信号执行频率和功率谱分析的工具。

频谱分析数量

频谱分析研究非均匀采样的离散数据中包含的频谱。傅里叶变换是通过在频率空间表示基于时间或空间的信号来揭示该信号的频率分量的工具。下表列出了用于描述和解释信号属性的常用量。要了解有关傅里叶变换的更多信息,请参阅傅里叶变换。

数量描述
x

采样的数据

n = length(x)

样本数量

fs

采样频率(每单位时间或空间的样本数)

dt = 1/fs

每样本的时间或空间增量

t = (0:n-1)/fs

数据的时间或空间范围

y = fft(x)

数据的离散傅里叶变换 (DFT)

abs(y)

DFT 的振幅

(abs(y).^2)/n

DFT 的幂

fs/n

频率增量

f = (0:n-1)*(fs/n)

频率范围

fs/2

奈奎斯特频率(频率范围的中点)

含噪信号

尝试此示例Copy Code  Copy Command

傅里叶变换可以计算被随机噪声破坏的信号的频率分量。

创建具有 15 Hz 和 40 Hz 分量频率的信号,并插入随机高斯噪声。

rng('default')
fs = 100;                                % sample frequency (Hz)
t = 0:1/fs:10-1/fs;                      % 10 second span time vector
x = (1.3)*sin(2*pi*15*t) ...             % 15 Hz component
  + (1.7)*sin(2*pi*40*(t-2)) ...         % 40 Hz component
  + 2.5*randn(size(t));                  % Gaussian noise;

信号的傅里叶变换可确定其频率分量。在 MATLAB® 中,fft 函数使用快速傅里叶变换算法计算傅里叶变换。使用 fft 计算信号的离散傅里叶变换。

y = fft(x);

将功率谱绘制为频率的函数。尽管噪声在基于时间的空间内伪装成信号的频率分量,但傅里叶变换将其显现为功率尖峰。

n = length(x);          % number of samples
f = (0:n-1)*(fs/n);     % frequency range
power = abs(y).^2/n;    % power of the DFT

plot(f,power)
xlabel('Frequency')
ylabel('Power')

Figure contains an axes object. The axes object with xlabel Frequency, ylabel Power contains an object of type line.

在许多应用中,查看以 0 频率为中心的功率谱更加方便,因为它能更好地显示信号的周期性。使用 fftshift 函数对 y 执行循环平移,并绘制以 0 为中心的功率。

y0 = fftshift(y);         % shift y values
f0 = (-n/2:n/2-1)*(fs/n); % 0-centered frequency range
power0 = abs(y0).^2/n;    % 0-centered power

plot(f0,power0)
xlabel('Frequency')
ylabel('Power')

Figure contains an axes object. The axes object with xlabel Frequency, ylabel Power contains an object of type line.

音频信号

尝试此示例Copy Code  Copy Command

您可以使用傅里叶变换来分析音频数据的频谱。

文件 bluewhale.au 包含水下麦克风记录的加利福尼亚海岸的太平洋蓝鲸发声的音频数据。此文件来自于康奈尔大学生物声学研究项目保存的动物发声库。

由于蓝鲸的叫声频率如此之低,以至人类几乎听不到。数据中的时间标度压缩了 10 倍,以便提高音调并使叫声更清晰可闻。读取并绘制音频数据。可使用命令 sound(x,fs) 来收听音频。

whaleFile = 'bluewhale.au';
[x,fs] = audioread(whaleFile);

plot(x)
xlabel('Sample Number')
ylabel('Amplitude')

Figure contains an axes object. The axes object with xlabel Sample Number, ylabel Amplitude contains an object of type line.

第一个声音为“颤音”,之后是三个“呻吟音”。本示例将分析单个呻吟音。指定大致包含第一个呻吟音的新数据,并校正时间数据以体现 10 部的加速。将截断的信号绘制为时间的函数。

moan = x(2.45e4:3.10e4);
t = 10*(0:1/fs:(length(moan)-1)/fs);

plot(t,moan)
xlabel('Time (seconds)')
ylabel('Amplitude')
xlim([0 t(end)])

Figure contains an axes object. The axes object with xlabel Time (seconds), ylabel Amplitude contains an object of type line.

数据的傅里叶变换确定了音频信号的频率分量。在一些使用 fft 处理大量数据的应用中,通常需要调整输入,使样本数量为 2 的幂。这样可以大幅提高变换计算的速度,对于具有较大质因数的样本大小更是如此。指定新的信号长度 n(2 的幂),并使用 fft 函数计算信号的离散傅里叶变换。fft 会自动使用零来填充原始数据,以增加样本大小。

m = length(moan);       % original sample length
n = pow2(nextpow2(m));  % transform length
y = fft(moan,n);        % DFT of signal

根据加速因子调整频率范围,并计算和绘制信号的功率谱。绘图指示,呻吟音包含约 17 Hz 的基本频率和一系列谐波(其中强调了第二个谐波)。

f = (0:n-1)*(fs/n)/10;
power = abs(y).^2/n;      

plot(f(1:floor(n/2)),power(1:floor(n/2)))
xlabel('Frequency')
ylabel('Power')

Figure contains an axes object. The axes object with xlabel Frequency, ylabel Power contains an object of type line.

另请参阅

fft | fftshift | nextpow2 | ifft | fft2 | fftn

相关主题

  • 傅里叶变换
  • 二维傅里叶变换

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

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

相关文章

Axios GET 请求:从入门到实践

在进行网络请求时,axios 是一个非常常用的请求库。本文将介绍如何使用 axios 发起 GET 请求,并详细列出传参的几种写法。同时会提供一个实践案例,其中包含基本路由与请求处理的过程,并确保在 IDE 编辑器中可以顺利运行。 什么是 a…

STM32入门——GPIO输入输出

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等输入模…

ES6 数组的用法

1. forEach() 用来循环遍历的 for 数组名.forEach(function (item,index,arr) {})item:数组每一项 , index : 数组索引 , arr:原数组作用: 用来遍历数组 let arr [1, 2, 3, 4]; console.log(arr); let arr1 arr.forEach((item, index, arr) > {console.log(item, index…

SpringBoot第29讲:SpringBoot集成MySQL - MyBatis-Plus代码自动生成

SpringBoot第29讲:SpringBoot集成MySQL - MyBatis-Plus代码自动生成 本文是SpringBoot第29讲,主要介绍 MyBatis-Plus代码自动生成,以及产生此类代码生成工具的背景和此类工具的基本实现原理。 文章目录 SpringBoot第29讲:SpringBo…

em3288 linux_4.19 第一次烧写无法进入内核的情况

1. 情况一: /DDR Version 1.11 20210818 In SRX Channel a: DDR3 400MHz Bus Width32 Col10 Bank8 Row15 CS1 Die Bus-Width16 Size1024MB Channel b: DDR3 400MHz Bus Width32 Col10 Bank8 Row15 CS1 Die Bus-Width16 Size1024MB OUT Boot1 Release Time: Jul 22 2…

pyecharts包的简单使用

pyecharts简介 Pyecharts是一个Python的数据可视化库。 它基于ECharts,一个由百度开发的流行的JavaScript图表库。Pyecharts旨在为Python用户提供一种简便的方法来创建各种类型的交互式图表,包括折线图、柱状图、散点图、饼图、地图等。通过使用Pyechar…

场景库之高精度地图编辑器

一、背景介绍 高精度地图编辑器是场景库生产所需的必要工具,地图编辑器基于JS开发,可对指定的地图进行描绘,生成数字高精度地图。 二、功能介绍 路网元素支持: 类别元素图片交叉口交叉口安全岛交通岛导流岛道路中心圈路口边缘线…

ATTCK实战系列-红队评估 (红日靶场3)Vulnstack三层网络域渗透靶场

文章目录 环境配置靶场介绍靶场设置 外网渗透信息收集端口扫描目录扫描 漏洞发现与利用获取ssh账号密码,登录centos 提权 内网渗透建立代理内网信息收集smb暴破,获取本地管理员密码 横向移动使用psexec模块上线msf 环境配置 靶场介绍 靶场地址 http:/…

[LeetCode]链表相关题目(c语言实现)

文章目录 LeetCode203. 移除链表元素LeetCode237. 删除链表中的节点LeetCode206. 反转链表ⅠLeetCode92. 反转链表 II思路 1思路 2 LeetCode876. 链表的中间结点剑指 Offer 22. 链表中倒数第k个节点LeetCode21. 合并两个有序链表LeetCode86. 分隔链表LeetCode234. 回文链表Leet…

如何打造属于自己的个人IP?

在当今信息爆炸的时代,个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中,还是在社交生活中,拥有个人 IP 的人都能脱颖而出,吸引更多的关注和机会。那么,如何打造属于自己的个人 IP 呢?…

机器学习和深度学习简述

一、人工智能、机器学习、深度学习的关系 近些年人工智能、机器学习和深度学习的概念十分火热,但很多从业者却很难说清它们之间的关系,外行人更是雾里看花。概括来说,人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的,三…

华为OD机试真题 JavaScript 实现【名字的漂亮度】【牛客练习题】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目&#x…

vue3实现拖拽排序

效果&#xff1a; 实现 <template><div class"box"><divv-for"(item, index) in items":key"item.id"class"item":style"{ order: item.order }":draggable"true"dragstart"onDragStart(in…

redis的安装和配置

一、nosql 二、redis的安装和配置 redis的安装&#xff1a; redis常见配置&#xff1a; 配置文件redis.conf

DP学习第五篇之礼物的最大价值

DP学习第五篇之礼物的最大价值 剑指 Offer 47. 礼物的最大价值 - 力扣&#xff08;LeetCode&#xff09; 一.题目解析 二. 算法原理 状态表示 tips: 经验题目要求。以[i,j]位置为结尾&#xff0c;。。。 dp[i][j]: 到达[i, j]位置时&#xff0c;此时的最大礼物价值 状态转移…

Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单 em

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…

【css】css隐藏元素

display:none&#xff1a;可以隐藏元素。该元素将被隐藏&#xff0c;并且页面将显示为好像该元素不在其中。visibility:hidden&#xff1a; 可以隐藏元素。但是&#xff0c;该元素仍将占用与之前相同的空间。元素将被隐藏&#xff0c;但仍会影响布局。 代码&#xff1a; <!…

Maya中polygon和transform区别?

In Autodesk Maya, “polygon” and “transform” are two fundamental types of nodes used to represent different aspects of 3D geometry and the transformation of objects in the scene. Polygon (polyMesh): A polygon node, often referred to as a “polyMesh,” r…

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务&#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本&#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本&#xff1a;默认使用systemd作…