基于matlab设计的低通滤波器

基于matlab设计的滤波器

低通滤波器

%系统采样频率

fs=1200%原始信号

N=400;

n=0:N-1;

t=n/fs;

fl=100

fh=400

y=sin(2*pi*fl*t)+sin(2*pi*fh*t);%显示原始信号

subplot(321)

plot(t,y)

title('输入信号');xlabel('t/s');ylabel('幅度');

%对原始信号频谱分析

sfft=fft(y); 

subplot(322);

plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft));

title('信号频谱');xlabel('频率/Hz');ylabel('幅度'); 

%设计低通滤波器

K = 2; 

Wc =250;

[z,p,k] = buttap(K);        %zpk分别为零点列向量、极点列向量和增益系数

[b,a] = zp2tf(z,p,k);

[b,a] = lp2lp(b,a,2*pi*Wc);  % lp2lp转换命令把滤波器转化成具有不同截止频率的lp2hp,lp2bplp2bs

[b1,a1] = bilinear(b,a,fs);   %将模拟信号转为数字信号

[H,W] = freqz(b1,a1,N,fs);  %求数字低通滤波器的频率响应

subplot(323)

plot(W,abs(H));

title('低通滤波器');

grid on;

%滤波

y1=filter(b1,a1,y);          %叠加函数y经过低通滤波器以后的新函数

%显示滤波后的波形及频谱

subplot(324); 

plot(t,y1);                        

title('输出信号');xlabel('t/s');ylabel('幅度');   

y2=fft(y1);  %傅里叶变换

subplot(325); 

plot((1:length(y2)/2)*fs/length(y2),2*abs(y2(1:length(y2)/2))/length(y2)); 

title('低通滤波后频谱');xlabel('频率/Hz');ylabel('幅度');  

  • 13
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值