【使用matlab绘制音频数据的时域图和频域图】

news/2024/4/29 11:26:14/文章来源:https://blog.csdn.net/qq_41180996/article/details/137110620

使用matlab绘制音频数据的时域图和频域图

虚拟的数据集见附件

一、读取数据并设置参数

close all;clear all;colordef black
设置参数
filedir = 'D:\Projects\MATLAB\data'
name = '2024-03-28.txt'
% disp(filedir);Fs = 8192; %采样率,即单位时间的样本个数(Hz),应该是1s内8192个样本
WINDOWS = 8192*1; %分帧帧大小,每一帧所包含的样本数
OVERLAP = 0;      %分帧重叠读取音频数据
orgdata = load(strcat(filedir,'\',name)); % 声呐原始数据rawdata = orgdata(1:Fs*60*1,2); % 选择第2列前1分钟内的音频数据
datalen = length(rawdata); %数据长度
time = 0:1/Fs/60:(datalen-1)/Fs/60; % 时域图横坐标:时间【0,13min】,步长1/Fs/60代表每分钟一个样本

二、绘制时域图

二维时域图
figure
set(gcf,'units','normalized','pos',[0 0 1 1]); % 最大化图形
plot(time,rawdata)
set(gca,'Fontsize',10); %字体大小10points
title('二维时域图');
xlabel('时间/min');ylabel('Amplitude'); %(时间,振幅)     

在这里插入图片描述

三、绘制频域图

频谱图1

先进行傅里叶变换,将时域数据转化为频域数据,例如:

快速傅里叶变换
fftValue = abs(fftshift(fft(rawdata))); %快速傅里叶变换:将时域转化为频域

全部数据:

频谱图1:全部数据
figure % 频谱图1
set(gcf,'units','normalized','pos',[0 0 1 1]); % 最大化图形Amp1 = (fftValue)/datalen;  % 纵坐标:实际幅值(每个幅度值除以datalen归一化)
f1 = (1:datalen)*Fs/datalen;  % 横坐标:生成对称频率坐标(数组索引必须是正整数或者逻辑值)plot(f1,Amp1);    
xlim([0 8192]);%限制横坐标
ylim([0 0.006]);%限制横坐标
set(gca,'Fontsize',10);
title('频谱图1 全部');
xlabel('频率/HZ');ylabel('Amplitude');

在这里插入图片描述

频谱图2

取左一半图:

频谱图2 左一半
figure %频谱图3 左一半
set(gcf,'units','normalized','pos',[0 0 1 1]); % 最大化图形Amp3 = (fftValue(1:datalen/2))/datalen/2;  % 频谱图纵坐标:实际幅值(取一半的数据点,每个幅度值除以datalen/2归一化)
f3 = (1:datalen/2)*Fs/datalen;  % 频谱图横坐标:生成一个从0到采样频率一半的对称频率坐标plot(f3,Amp3);    
xlim([0 8192]);%限制横坐标
ylim([0 0.006]);%限制横坐标
set(gca,'Fontsize',10);
title('频谱图2 左一半 [0,1/2L]');
xlabel('频率/HZ');ylabel('Amplitude');

在这里插入图片描述

频谱图3

取右一半图:

频谱图3 右一半
figure %频谱图2.5 右一半
set(gcf,'units','normalized','pos',[0 0 1 1]); % 最大化图形Amp25 = (fftValue(datalen/2:datalen-1))/datalen/2;  % 频谱图纵坐标:实际幅值(取一半的数据点,每个幅度值除以datalen/2归一化)
f25 = (datalen/2:datalen-1)*Fs/datalen;  % 频谱图横坐标:生成一个从0到采样频率一半的对称频率坐标plot(f25,Amp25);    
xlim([0 8192]);%限制横坐标
ylim([0 0.006]);%限制横坐标
set(gca,'Fontsize',10);
title('频谱图3 右一半 [1/2L,L]');
xlabel('频率/HZ');ylabel('Amplitude');

在这里插入图片描述

频谱图4

将右边一半图左移,使得横坐标从0开始

%% 频谱图4:右一半左移
figure %频谱图4 右一半左移
set(gcf,'units','normalized','pos',[0 0 1 1]); % 最大化图形Amp2 = (fftValue(datalen/2:datalen-1))/datalen/2;  % 频谱图纵坐标:实际幅值(取一半的数据点,每个幅度值除以datalen/2归一化)
f2 = (datalen/2:datalen-1)*Fs/datalen - Fs/2;  % 频谱图横坐标:生成一个对称频率坐标,-Fs/2代表横坐标从0到采样频率一半plot(f2,Amp2);    
xlim([0 8192]);%限制横坐标
ylim([0 0.006]);%限制横坐标
set(gca,'Fontsize',10);
title('频谱图4 右一半 [0,1/2L]');
xlabel('频率/HZ');ylabel('Amplitude');

在这里插入图片描述

ps: 在绘制频域图时需要限制合适的横纵坐标范围,便于数据显示。

xlim([0 8192]);%限制横坐标
ylim([0 0.006]);%限制横坐标

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

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

相关文章

电脑如何更新AMD独立显卡驱动?安装官方驱动的方法来了!

前言 有小伙伴在电脑上安装了独立显卡之后,总会用驱动人生或者驱动精灵等软件给独立显卡安装驱动。这种安装方法并不能说是错的,反正能用就行。 安装官方驱动的办法其实很简单,现在独立显卡一共就那么几家,最常见的显卡就是Nvidi…

Java基于微信小程序的校园订餐小程序的实现,附源码和数据库

博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月29日,星期五

每天一分钟,知晓天下事! 2024年3月29日 星期五 农历二月二十 1、 网络表演(直播与短视频)运营团体标准发布:应建立举报处置机制。 2、 商务部:中国决定终止对澳大利亚进口葡萄酒征收反倾销税和反补贴税。…

八大技术趋势案例(虚拟现实增强现实)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

android中控件和基本事件的响应

1.概述 在Android中,在处理UI中的各种元素的时候,两个程序中的要点为: 得到布局文件(XML)中的控件句柄 设置控件的行为 本篇文章将介绍在 Android 中几种基本的程序控制方法,要获得的效果是通过 2 个按钮来…

吴恩达机器学习:实践实验室-应用机器学习的建议(Advice for Applying )

在这个实验室中,您将探索评估和改进机器学习模型的技术。 文章目录 1 - Packages2-评估学习算法(多项式回归)2.1拆分数据集2.1.1图列、测试集 2.2模型评估的误差计算,线性回归2.3比较训练和测试数据的表现 3-偏差和方差3.1绘图列…

鸿蒙OpenHarmony技术:【设备互信认证】

简介 在OpenHarmony中,设备互信认证模块作为安全子系统的子模块,负责设备间可信关系的建立、维护、使用、撤销等全生命周期的管理,实现可信设备间的互信认证和安全会话密钥协商,是搭载OpenHarmony的设备进行可信互联的基础平台能…

R语言批量计算t检验,输出pvalue和均值

1.输入数据如下&#xff1a; 2.代码如下 setwd("E:/R/Rscripts/rG4相关绘图") # 读取CSV文件 data <- read.csv("box-cds-ABD-不同类型rg4-2.csv", stringsAsFactors FALSE)# 筛选出Type2列为指定五种类型的数据 filtered_data <- subset(data, …

一篇文章,告别Flutter状态管理争论,问题和解决

起因 每隔一段时间&#xff0c;都会出现一个新的状态管理框架&#xff0c;最近在YouTube上也发现了有人在推signals, 一个起源于React的状态管理框架&#xff0c;人们总是乐此不疲的发明各种好用或者为了解决特定问题而产生的方案&#xff0c;比如Bloc, 工具会推陈出新&#x…

春秋云境CVE-2023-0562

简介 银行储物柜管理系统是一个基于网络的应用程序&#xff0c;用于处理存储银行客户贵重物品的银行储物柜。储物柜的所有详细信息都保存在数据库中。银行储物柜管理系统项目是使用 PHP 和 MySQLi 扩展开发的。 正文 进入靶场&#xff0c;首先就看到有个bankers&#xff0c;…

Java安全篇-Fastjson漏洞

前言知识&#xff1a; 一、json 概念&#xff1a; json全称是JavaScript object notation。即JavaScript对象标记法&#xff0c;使用键值对进行信息的存储。 格式&#xff1a; {"name":"wenda","age":21,} 作用&#xff1a; JSON 可以作为…

【Redis】redis哨兵模式

概述 Redis Sentinel&#xff0c;即Redis哨兵&#xff0c;在Redis 2.8版本开始引入。它是Redis高可用的实现方案之一。Sentinel是一个管理多个Redis实例的工具&#xff0c;它的核心功能是可以实现对Redis的监控、通知、自动故障转移。 监控&#xff08;Monitoring&#xff09…

OSX-02-Mac OS应用开发系列课程大纲和章节内容设计

本节笔者会详细介绍下本系统专题的大纲&#xff0c;以及每个专题章节的组织结构。这样读者会有一个全局的概念。 在开始前还是在再介绍一下下面这个框架图&#xff0c;因为比较重要&#xff0c;在这里再冗余介绍一下。开发Apple公司相关产品的软件时&#xff0c;主要有两个框架…

Untiy 布局控制器Aspect Ratio Fitter

Aspect Ratio Fitter是Unity中的一种布局控制器组件&#xff0c;用于根据指定的宽高比来调整包含它的UI元素的大小。实际开发中&#xff0c;它可以确保UI元素保持特定的宽高比&#xff0c;无论UI元素的内容或父容器的大小如何变化。 如图为Aspect Ratio Fitter组件的基本属性&…

深度学习 - PyTorch基本流程 (代码)

直接上代码 import torch import matplotlib.pyplot as plt from torch import nn# 创建data print("**** Create Data ****") weight 0.3 bias 0.9 X torch.arange(0,1,0.01).unsqueeze(dim 1) y weight * X bias print(f"Number of X samples: {len(…

Day24:私信列表、私信详情、发送私信

测试用户&#xff1a;用户名aaa 密码aaa 查询当前用户的会话列表&#xff1b;每个会话只显示一条最新的私信&#xff1b;支持分页显示。 首先看下表结构&#xff1a; conversation_id: 用from_id和to_id拼接&#xff0c;小的放前面去&#xff08;因为两个人的对话应该在一个会…

物联网实战--入门篇之(一)物联网概述

目录 一、前言 二、知识梳理 三、项目体验 四、项目分解 一、前言 近几年很多学校开设了物联网专业&#xff0c;但是确却地讲&#xff0c;物联网属于一个领域&#xff0c;包含了很多的专业或者说技能树&#xff0c;例如计算机、电子设计、传感器、单片机、网…

誉天华为认证云计算课程如何

HCIA-Cloud Computing 5.0 课程介绍&#xff1a;掌握华为企业级虚拟化、桌面云部署&#xff0c;具备企业一线部署实施及运维能力 掌握虚拟化技术、网络基础、存储基础等内容&#xff0c;拥有项目实施综合能力 满足企业虚拟化方案转型需求&#xff0c;应对企业日益多样的业务诉求…

快速上手Spring Cloud 十四:璀璨物联网之路

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

JAVA面试八股文之集合

JAVA集合相关 集合&#xff1f;说一说Java提供的常见集合&#xff1f;hashmap的key可以为null嘛&#xff1f;hashMap线程是否安全, 如果不安全, 如何解决&#xff1f;HashSet和TreeSet&#xff1f;ArrayList底层是如何实现的&#xff1f;ArrayList listnew ArrayList(10)中的li…