用matlab对音频实现巴特沃斯的低通滤波和高通滤波

%低通和高通滤波器对引体向上的影响
clear all;
close all;
[x,fs]=audioread('111.wav');%提取音频函数,wav
t=size(x,1)/fs;%采样时间(猜测)

%IIR巴特沃斯低通滤波
Wp=140*2/fs; %hz或者角频率为单位
Ws=160*2/fs;
Rp=5;%db
Rs=20;
[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s')%给定wp、ws、rp、rs,计算滤波器的阶数和截止频率3dB
[b,a]=butter(n,Wn,'low','s');%根据n和wn计算滤波器传递函数的系数
[num,den]=bilinear(b,a,1/10);
%利用双线性变换方法把s域的模拟滤波器转换为数字滤波器
%num den 分别对应离散系统的系统函数h(z)的分子和分母多项式的系数向量
[h,w]=freqz(num,den,512);%求离散系统频响特性的函数,512为默认值
y=filter(num,den,x);%使用由分子和分母系数b和a定义的有理传递函数对输入数据x进行滤波
%画图
figure(1);
subplot(411);
plot(x);%绘制出系统在频率区间的频响曲线
xlabel('时间/秒');ylabel('幅度');title('低通滤波前的音频波形');
subplot(412);
plot(y);
xlabel('时间/秒');ylabel('幅度');title('低通滤波后的音频波形');
% mp4write(y,fs,'低通滤波处理后.mp4')

%IIR巴特沃斯高通滤波
Wp=4500*2/fs;
Ws=5000*2/fs;
Rp=5;
Rs=20;
[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s')
[b,a]=butter(n,Wn,'high','s');
[num,den]=bilinear(b,a,1/6);
[h,w]=freqz(num,den,512);
y=filter(num,den,x);
figure(1);
subplot(413);
plot(x);
xlabel('时间/秒');ylabel('幅度');title('高通滤波前的音频波形');
subplot(414);
plot(y);
xlabel('时间/秒');ylabel('幅度');title('高通滤波后的音频波形');
audiowrite('高通滤波处理后.wav',y,fs)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值