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函數進行低通設計。