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');

效果:

相关推荐
程序员小明儿6 分钟前
量子计算探秘:从零开始的量子编程与算法之旅 · 第四篇
算法·量子计算
来两个炸鸡腿8 分钟前
【Datawhale2603】happy-llm task04 Encoder-Decoder预训练
人工智能·学习·大模型
我是唐青枫8 分钟前
C#.NET SignalR 深入解析:实时通信、Hub 与连接管理实战
开发语言·c#·.net
程序员小明儿8 分钟前
量子计算探秘:从零开始的量子编程与算法之旅 · 第一篇
算法·量子计算
不想看见4049 分钟前
Add Strings数字处理--力扣101算法题解笔记
数据结构·算法·leetcode
炸膛坦客10 分钟前
单片机/C语言八股:(四)volatile 和 static 关键字的作用
c语言·开发语言
sycmancia12 分钟前
C++——对象模型分析
开发语言·c++
云泽80812 分钟前
C++ STL set 容器全解析:从基础用法、算法实践到云同步实战
开发语言·c++·算法
山上三树13 分钟前
C++ 智能指针详解与代码示例
开发语言·c++
zhouping@15 分钟前
Java学习笔记day04
java·笔记·学习