求救
谁有基于MATLAB的FIR数字滤波器的实例程序啊 西安电子第二版的第四个实验%实验4:用窗函数法设计FIR数字滤波器
clc;
N=input('输入窗函数长度(默认值15,选择范围):\nN=','s');
N=str2num(N);
if N<1
N=15;
else
if N<10 | N>64
N=15;
end
end
w=input('输入截止频率(默认值pi/4,选择范围):\nwc=','s');
if w<1
w=pi/4;
else
if w<0.5 | w>pi
w=pi/4;
end
end
b=1;
close all;
i=0;
while(b)
n=;
%产生理想低通滤波器单位脉冲响应hd(n)
alpha=(N-1)/2;
n=;
Q=n-alpha+eps;
hd=sin(w*Q)./(pi*Q);
k=input('选择窗口类型(默认1):\n矩形窗\nHamming窗\nHanning窗\nBlackman\n选择:','s');
switch(k)
case{'1','2','3','4'}
k=str2num(k);
otherwise
k=1;
end
switch(k)
case 1
B=boxcar(N);
string='Boxcar';
case 2
B=hamming(N);
string='Hamming';
case 3
B=hanning(N);
string='Hanning';
case 4
B=blackman(N);
string='Blackman';
end
string=;
h=hd.*(B)';
=freqz(h,,1024,'whole');
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
i=i+1;
figure(i);
subplot(2,2,1);
n=0:N-1;
stem(n,h,'.');
axis();
hold on;
n=0:N-1;
x=zeros(N);
plot(n,x,'-');
xlabel('n');
ylabel('h(n)');
title('实际低通滤波器的h(n)');
text((0.3*N),0.27,string);
hold off;
subplot(2,2,2);
plot(m/pi,db);
axis();
xlabel('w/pi');
ylabel('20lg|H(e^j^w)|');
title('衰减特性/dB');
grid;
subplot(2,2,3);
plot(m,pha);
hold on;
n=0:7;
x=zeros(8);
plot(n,x,'-');
axis();
xlabel('w');
ylabel('相位/rad');
title('相频特性');
subplot(2,2,4);
plot(m,mag);
axis();
xlabel('w');
ylabel('|H(e^j^w)|');
title('幅频特性');
text(0.9,1.2,string);
b=input('继续实验吗?(默认1)\n继续\n退出\n选择:','s');
switch(b)
case{'0','1'}
b=str2num(b);
otherwise
b=1;
end
if b==1
clc;
N=input('输入窗函数长度(默认值15,选择范围):\nN=','s');
N=str2num(N);
if length(N)<1
N=15;
else
if N<10 | N>64
N=15;
end
end
w=input('输入截止频率(默认值pi/4,选择范围):\nwc=','s');
w=str2num(w);
if length(w)<1
w=pi/4;
else
if w<0.5 | w>pi
w=pi/4;
end
end
end
end
页:
[1]