用MATLAB设计滤波器
用MATLAB设计一个低通和带通滤波器,通带和阻带可以假定。MATLAB学的不好,最好有注释。
%根据技术指标,设计FIR数字低通滤波器
%选汉明窗
wp=0.25*pi;ws=0.35*pi; %滤波器边界频率
wdelta=ws-wp; %过渡带宽
N=ceil(6.6*pi/罩森wdelta) %汉宁Hanning窗函数主瓣宽求得滤波器所用窗函数的最小长度
Nw=N;
wc=(wp+ws)/2; %截止频率在通带和阻带边界频率的中点
n=0:N-1;
alpha=(N-1)/2; %求滤波器的相位延迟
m=n-alpha+eps; %eps为MATLAB系统的精度
hd=sin(wc*m)./(pi*m); %求理想滤波器脉冲响应
win=hamming(Nw); %采用汉明窗
h=hd.*win'; %在时间域乘积对应于频率域的卷积
b=h;
figure(1)
[H,f]=freqz(b,1,512);
subplot(2,1,1),plot(f,20*log10(abs(H)))
xlabel('频率/Hz');ylabel('振幅/dB');grid on;
subplot(2,1,2),plot(f,180/pi*(angle(H)))
xlabel('频率/Hz');ylabel('相位/^o');grid on;
设计线性相位带通滤波器,其长度N=15,上下边带截止带卖频率分别为W1= 0.3π,w2=0.5π
%%用汉明窗窗设计线性相位带通滤波器蠢闷逗
% Window=hamming(16);
% b=fir1(15,[0.3 0.5],Window);
% freqz(b,1)
%%用矩形窗窗设计线性相位带通滤波器
% Window=boxcar(16);
% b=fir1(15,[0.3 0.5],Window);
% freqz(b,1)
%%用blackman窗设计线性相位带通滤波器
% Window=blackman(16);
% b=fir1(15,[0.3 0.5],Window);
% freqz(b,1)