设计低通滤波器-Matlab

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函数进行低通设计。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值