matlab做一个滤波器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab做一个滤波器相关的知识,希望对你有一定的参考价值。
如题 随便怎样的 最好有一定的文字说明 不要ctrl+c ctrl+v的 谢谢了
我也在学习滤波,有空交流。一个离散系统可以看作是一个滤波器,系统的输出就是输入经过滤波器滤波的结果。那么,MATLAB实现这个离散系统的过程,也就是滤波器的实现过程了。
而差分方程可以表示一个系统,其系统函数可以轻松求得。如,差分方程y(n)-0.8y(n-1)-0.5y(n-2)=0.7x(n)+0.3x(n-1),其脉冲响应可用filter函数或者impz函数来求
MATLAB代码:
pulse=[1,zeros(1,63)];%定义一个单位脉冲信号
b=[0.7 0.3];%系统函数的分子项系数
a=[1 -0.8 -0.5];%系统函数的分母项
h1=filter(b,a,pulse);%滤波,输入为单位脉冲,输出为脉冲响应。
stem(h1) 参考技术A %************** 滤波器 *******************************%
% Wp=0.2* pi; Ws=pi/2; Rs= 40; B=Ws- Wp;
% beta= 0.5842*(Rs-21)^0.4 + 0.07886 * (Rs- 21);
% N= ceil((Rs-8)/2.285/B);
% Wc= (Wp+ Ws)/2/pi;
% h=fir1(N,Wc,kaiser(N+1,beta));
%
%xt信号的频域信号
x2F=fft(x2,length(x2));
%%%%%%%%滤波器设计
fp=3000;fst=5550;fs=44100;
wp=2*fp/fs;
ws=2*fst/fs;
deltaw=ws-wp;
N0=ceil(6.6/deltaw);
N=N0+mod(N0+1,2);
n=N-1;
wn=(ws+wp)/2;
b=fir1(n,wn);
[H,w]=freqz(b,1,length(x2F),'whole');
mag=abs(H);
n=0:length(mag)-1;
fl=(0:length(x2F)-1)'*44100/length(x2F);
figure(11)
plot(fl,mag,'r-');
title('滤波器幅频响应');
xlabel('f'),ylabel('H');
hold on;
grid on
%%%通过滤波器之后的频域信号
for i=1:length(x2F)
signalF(i)=x2F(i)*H(i);
end
fl=(0:length(x2F)-1)'*44100/length(x2F);
figure(12)
mag2=abs(signalF);
plot(fl,mag2,'r-');
title('信号滤波后幅频响应');
xlabel('f'),ylabel('x1’(f)');
hold on;
grid on
%%%%通过滤波器之后的时域信号
signalT=ifft(signalF,N1);
figure(13)
plot(t,signalT,'r-');
title('信号滤波后时域信号');
xlabel('f'),ylabel(' x1’(t)');
hold on;
grid on
以上是关于matlab做一个滤波器的主要内容,如果未能解决你的问题,请参考以下文章