Matlab:音频处理

用Matlab绘制一段音频信号在时域上的波形图,然后用低通滤波器滤掉噪音并再次绘制

1、导入音频文件

复制代码
filename = 'X:\1.mp3'; % 替换为你的音频文件路径
[x, Fs] = audioread(filename);

2、获取音频信号长度

复制代码
len = length(x);

3、计算时间轴

复制代码
t = (0:len-1) / Fs;

4、绘制音频信号在时域上的波形图

复制代码
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Audio Signal in Time Domain');

5、设计并应用低通滤波器

复制代码
cutoff_frequency = 2600; % 截止频率为2600 Hz
normalized_cutoff = cutoff_frequency / (Fs/2);
order = 8; % 滤波器阶数
[b, a] = butter(order, normalized_cutoff, 'low');

filtered_x = filter(b, a, x);

6、绘制滤波后的音频信号在时域上的波形图

复制代码
subplot(2,1,2);
plot(t, filtered_x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Audio Signal in Time Domain');

总:

Matlab 复制代码
% 导入音频文件
filename = 'C:\Users\ahiii\Desktop\1.mp3'; % 替换为你的音频文件路径
[x, Fs] = audioread(filename);

% 获取音频信号长度
len = length(x);

% 计算时间轴
t = (0:len-1) / Fs;

% 绘制音频信号在时域上的波形图
figure;
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Audio Signal in Time Domain');

% 设计低通滤波器
cutoff_frequency = 2600; % 截止频率为2600 Hz
normalized_cutoff = cutoff_frequency / (Fs/2);
order = 8; % 滤波器阶数
[b, a] = butter(order, normalized_cutoff, 'low');

% 应用低通滤波器
filtered_x = filter(b, a, x);

% 绘制滤波后的音频信号在时域上的波形图
subplot(2,1,2);
plot(t, filtered_x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Audio Signal in Time Domain');

效果:

相关推荐
nbsaas-boot15 分钟前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
岁忧16 分钟前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
chao_78919 分钟前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
数字芯片实验室21 分钟前
分享一个可以学习正则表达式的网址:Pythex.org
学习·正则表达式
陈洪奇1 小时前
注册中心学习笔记整理
笔记·学习
风无雨1 小时前
GO 启动 简单服务
开发语言·后端·golang
光影少年1 小时前
从前端转go开发的学习路线
前端·学习·golang
斯普信专业组1 小时前
Go语言包管理完全指南:从基础到最佳实践
开发语言·后端·golang
张海森-1688201 小时前
FAAC 在海思平台使用得到aac实时音频流
音视频·aac
秋说2 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法