MATLAB 数字滤波

数字滤波是常用的音频处理技术 

可根据技术指标,先利用 FDATool 工具

设计一个数字滤波器

再用 Filter 或 Filter2 函数即可实现滤波处理 

调用的 Filter 函数格式是 Y = filte (B,A,X) 其中 和 是滤波器传输函数的分子和分母系数 是输入变量 Y是实现滤波后的输出变量 

如果处理立体声音频信号,可分开处理,但用 FIR 滤波器时调用 Filter2 函数更方便

012617137-scuba-diver-3.WAV 为例 实现数字滤波的程序如下

clear; 
close all; 
clc;
[X,FS]=audioread('012617137-scuba-diver-3.WAV'); % 将 WAV 文件转换成变量
%利用 FDATool 设计一个 LowpassButterworth 滤波器
%指标 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB
B =[0.0062,0.0187,0.0187,0.0062]; % 分子系数
A =[1,-2.1706,1.6517,-0.4312]; % 分母系数
Y=filter(B,A,X); % 实现数字滤波
t=(0:length(X)-1)/FS; % 计算数据时刻
subplot(2,2,1);plot(t,X); % 绘制原波形图
title(' 原信号波形图 '); % 加标题
subplot(2,2,3);plot(t,Y); % 绘制滤波波形图
title(' 滤波后波形图 '); % 加标题
xf=fft(X); % 作傅里叶变换求原频谱
yf=fft(Y); % 作傅里叶变换求滤波后频谱
fm=3000*length(xf)/FS; % 确定绘频谱图的上限频率
f=(0:fm)*FS/length(xf); % 确定绘频谱图的频率刻度
subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 绘制原波形频谱图
title(' 原信号频谱图 '); % 加标题
subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 绘制滤波后频谱图
title(' 滤波后信号频谱图 '); % 加标题
audiowrite('012617137-scuba-diver-3Filter.WAV',Y,FS); % 写成 WAV 文件


程序运行结果如图 所示 由图可知 滤波对波形影响不大

但对高频有较大衰减 试听会感觉到处理后的声音比较沉闷


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值