clear ;close all;
filename ='./23.wav';
[x ,fs] = audioread(filename);
parametricEQ = fdesign.parameq('N,Flow,Fhigh,Gref,G0,GBW,Gst', 2, 4700, 8000 ,0,-15,-5,-1,fs);
Hd = design( parametricEQ,'cheby2');
[b1 ,a1] =tf(Hd);
fvtool(Hd)
y1 = filter(b1,a1,x);
% y1 =y1*0.25;
% sound(y1,fs);
audiowrite('./out/out.wav',y1,fs);
第一种方式:按照滤波器设计理论中的公式进行, 设计好后画出 频响曲线图!
clear ; clc; close all;
filename ='21.wav';
[x ,Fs] = audioread(filename);
Fc =5500;
m=exp(-1/(Fs/Fc));
b = [1-m , 0];
a = [1 , -m] ;
[H ,f] = freqz(b ,a ,1000 , Fs );
figure(1)
plot(f , 20*log10(abs(H)));
y=filter(b,a,x);
audiowrite('./out/lowpass_fc_21out.wav',y,Fs);
第二种方式:
利用Matlab自带的 均衡器设计函数: fdesign.parameq 。
clear ; clc; close all;
filename ='./23.wav';
[x ,fs] = audioread(filename);
fs2=fs/2; % 降采样后采样频率的一半
fp1= 2500; % 通带频率
fs1= 5000; % 阻带频率
wp1=fp1/fs2; % 归一化通带频率
ws1=fs1/fs2; % 归一化阻带频率
Ap=3; As=30; % 通带波纹和阻带衰减
[n,Wn]=buttord(wp1,ws1,Ap,As); % 求滤波器原型阶数和带宽
n =1;
[b,a]=butter(n,Wn); % 求数字滤波器系数
% a=[ 1.0000 -0.3018];
% b = [ 0.3491 0.3491];
[H,f]=freqz(b,a,1000,fs); % 求数字滤波器幅频曲线
y1=filter(b,a,x); % 对降采样后的数据进行滤波
% figure(1)
% plot(f,(abs(H)))
figure(2)
plot(f,20*log10(abs(H)),'k');
grid;
xlabel('频率/Hz'); ylabel('幅值')
title('巴特沃斯滤波器的幅值响应')
set(gcf,'color','w');
audiowrite('lowpass.wav',y1,fs);
第三种方式:
利用buttord函数进行低通设计。