您的当前位置:首页正文

MATLAB_GUI设计FIR滤波器(窗函数).docx

2022-02-07 来源:东饰资讯网


1 数字滤波器的概述

FIR 数字滤波器的特性 窗函数的介绍

................................................................................................ 错误 ! 未定义书签。

错误 !未定义书签。

错误 ! 未定义书签。

错误 !未定义书签。

FIR 数字滤波器设计原理

错误 !未定义书签。

2 FIR 数字滤波器设计及实现 低通滤波器的设计 高通滤波器的设计 带通滤波器的设计 带阻滤波器的设计

错误 ! 未定义书签。 错误 ! 未定义书签。 错误 ! 未定义书签。 错误 ! 未定义书签。

错误 !未定义书签。

错误 ! 未定义书签。

3 基于 MATLAB GUI 的 FIR 滤波器的仿真 FIR 数字滤波器设计所实现的任务 FIR 数字滤波器界面设计 FIR 数字滤波器函数的编写 菜单 FilterType 的回调函数 显示类型 DispType 的函数

错误 !未定义书签。 错误 !未定义书签。 错误 !未定义书签。 错误 !未定义书签。

错误 ! 未定义书签。

阶数 N 和最小阶数 N 按钮的函数 文本编辑框的回调函数

错误 !未定义书签。 错误 !未定义书签。 错误 !未定义书签。 错误 !未定义书签。

错误 !未定义书签。

滤波器波形按钮的回调函数 文本框 Rp 和 Rs 的函 数 产生信号按钮的回调函数 滤波后的信号按钮的回调函数 按钮 Quit 的回调函数

错误 ! 未定义书签。

总程序的编写 错误 !未定义书签。

4 实验结果与显示 错误 !未定义书签。

5 结束语 错误 !未定义书签。 6 感谢 错误 !未定义书签。 7 参考文献 错误 !未定义书签。附录 错误 ! 未定义书签。

基于 MATLAB 的 FIR数字滤波器的设计与仿真

李宏华

湛江师范学院信息科学与技术学院,湛江

524048

摘 要:本文从 FIR 数字滤波器的设计原理和特性入手, 重点阐述了通过

实现了用 MATLAB 设计 FIR 数字滤波器的功能,

MATLAB GUI 实现了 FIR 数字滤波器的仿真。 详细介绍了 MATLAB GUI 界面的构建与回

调函数的程序编写与调试。

关键词: MATLAB; GUI; FIR 滤波器

The Design and Simulation of FIR Digital Filter base on ATLAB

LI Honghua

Information Science & Technology School, Zhanjiang Normal University, zhanjiang, 524048 China

Abstract :This paper starts with the design principles and characteristics of the FIR digital filter, Achieve the task of using MATLAB software to design the FIR digital filter, in particular introduction to complete the simulation

of the FIR digital filter base on MATLAB GUI software. Comprehensive introduce to the building of GUI interface and the program compiled with debugging of the callback function.

Key word : MATLAB; GUI; FIR Filter

1 数字滤波器的概述 FIR 数字滤波器设计原理

[1]中介绍了数字滤波器冲激响应的时域特征 ,可将数字滤波器分为 2 种 ,即无限长冲激响应滤波器 ( IIR)和有限长冲激响应滤波器 (FIR) 。FIR 具有突出的优点 :系统总是稳定的、易于实现线性相位、允许设计多通带 (或多阻带 )滤波器。但与 IIR 相比 ,在满足同样的阻带衰减的情况下需要较高的阶数。 FIR的冲激响应 h(k)是有限长的 M 阶 FIR系统函数可表示为

M

H ( z)

k

h( k) z k

0

M

滤波器的输出 : y(k ) h( k) x(k )

i 0

h(i )x(k i)

它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题 ,[2]中给出的设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。

在这里我们利用窗函数法设计 FIR滤波器。给定所要求的滤波器的频率响应 Hd ( ejw) ,

要求设计一个 FIR 滤波器的频率响应 H( ejw) 来逼近 Hd( ejw) . 设计是在时域进行的 , 首先由傅立叶变换导出无限长的序列 hd( n) , 然后用窗函数截断 hd ( n) ,即: h( n) = hd( n) w( n)。

FIR 数字滤波器的特性

FIR滤波器有以下特点:

(1) 系统的单位冲激响应 h(n)在有限个 n 值处不为零;

(2) 系统函数 H(z)在|z|>0 处收敛,极点全部在 z = 0处(因果系统);

(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽 样结构)也包含有反馈的递归部分。

因为 FIR数字滤波器的单位冲激响应是有限长的, 所以它永远都是稳定的。 [3] 说明了 达到具有线性相位这一要求, 仅需要对 FIR数字滤波器的冲激响应 h(n) 施加一定的约

束。令 z

ejw ,就可由 H ( z) 得到 FIR数字滤波器的频率响应:

H (ej ) H ( z) |

N

j

h(n)e j n

0

1

H ( )e j ( )

( 1-2-1)

z e

n

式中 H ( ) 是 H ( ej ) 的幅频特性,

( )

( ) 是 H (e j ) 的相频特性

arctan( Im( H (ej

)) )

(1-2-2)

RE( H (e j ))

[4] 中讨论了由于 h(n)的长度 N 取奇数或偶数时对 H(w)的特性有影响, FIR 滤波器的幅频特性可以分为以下 4 种情况:

( N 1)/2

(1)第Ⅰ种类型: h(n) 为偶对称,且 N 为奇数

N 1

根据式: H ( )

n 0

h(n)cos[(

N1

n) ] 可以得到滤波器的幅频函数为:

2

H ( )

n 0

a(n) cos( n)

( 1-2-3)

其中 a(0) h(

N /2

N 1

2

) ,a(n)

2h(

N

n), n 1,2,⋯ ,

2

N 1

。幅度函数 H ( ) 对0, ,2

呈偶对称。

2

(2)第Ⅱ种类型: h(n) 为偶对称,且 N 为偶数

N 1

根据式: H ( )

n 0

h(n)cos[(

N1

n) ] 可得滤波器的幅频函数为:

2

1 ) 2

H ( ) b( n)cos (n

n 1

(1-2-4)

其中: b(n)

2h(

N 2

n), n

1,2,⋯ , 。幅度函数 H ( ) 对于

N

0 或 2 呈偶对称。如

2

果数字滤波器在 一类型。

处不为零,如本文设计的高通滤波器和带阻滤波器则不能用这

(3)第Ⅲ种类型: h(n) 为奇对称,且 N 为奇数

N

1

根据式: H ( )

( N 1)/2

n

0

h(n)sin (

N 1

n) 可得滤波器的幅频函数为:

2

H ( ) c(n)sin( n)

n 1

(1-2-5)

其中 c(n) 2h

N

n , n 1,2,⋯, 2

N-1

。数字滤波器在

=0,

, 2 处不为零如低通

2

滤波器、高通滤波器、带阻滤波器,则不适合用这类滤波器来设计。

(4)第Ⅳ种类型: h(n) 为奇对称,且 N 为偶数

根据式: H ( )

N /2

N 1

n 0

h(n)sin

( N 1

2

n) 可得滤波器的幅频函数可表示为:

H ( )d (n)sin

n 1

(n

1 )2

(1-2-6)

其中: d (n)

2h N n , n

2

1,2,⋯, 。幅度函数 H ( ) 对于

N

呈偶对称。如果数

2

字滤波器在 器来设计。

0,2 处不为零如低通滤波器、 带阻滤波器,则不适合用这类数字滤波

窗函数的介绍

设计滤波器尽量要求窗函数满足以下两项要求:

(1)窗谱主瓣尽可能地窄,以获取较陡的过渡带。

(2)尽量减少窗谱的最大旁瓣的相对幅度。也就是能量尽量集中于主瓣,这样使尖峰和波纹减小,就可增大阻带的衰减。

但是这两项要求是不能同时满足的。 当选用主瓣宽度较窄时, 虽然得到陡峭的过渡带,但通带和阻带的波动明显增加; 当选用最小的旁瓣幅度时, 虽能得到平坦的幅度响应和较小的阻带波纹,但过渡带加宽,即主瓣会加宽。因此,实际所选用的窗函数往往是它们的折中。设计 FIR滤波器常用的窗函数有:矩形窗、三角窗、汉宁窗、海明窗、布拉克曼窗、凯塞窗等。 以下是几种窗函数的性能比较: 窗函数 旁瓣峰值衰 等效凯塞尔 主瓣过渡带 精确过渡带 最小阻带衰

减( dB) 减(Db) 宽( ) 宽( )

窗( )

矩形窗 -13 0 三角窗 -25 汉宁窗 -31 海明窗 -41 布莱克曼窗 -57 凯赛尔窗 -57

想详细了解以上几个窗函数请查阅参考文献

2 FIR 数字滤波器设计及实现 低通滤波器的设计

4 / N / N -21 8 / N / N -25 8 / N / N -44 8 / N / N -53 12 / N 11 / N -74 10 / N 10 / N -80

[4]或者用命令 wvtool(windows(N)) 查看。

低通滤波器允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。

程序如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %fp1=10;fs1=15;fs=100;boxcar window

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fp1=10; %低通通带模拟截止频率 fs1=15; %低通阻带模拟截止频率 fs=100; %采集频率

wp1=2*pi*fp1/fs; % 模拟转变为数字域的截止频率 ws1=2*pi*fs1/fs;

delta_w=ws1-wp1; %过渡带宽

N=ceil*pi/delta_w)+1;%最小阶数 N window=boxcar(N)';

%N=ceil*pi/delta_w)+1;%最小阶数 N

%window=bartlett(N)';% 注意要改一下过渡带宽的系数 %N=ceil*pi/delta_w)+1;%最小阶数 N %window=hanning(N)';

%N=ceil*pi/delta_w)+1;%最小阶数 N %window=hamming(N)';

%N=ceil(11*pi/delta_w)+1;%最小阶数 N %window=blackman(N)';

%N=ceil(10*pi/delta_w)+1;%最小阶数 N %window=kaiser(N+1)';

%理想 LPF的截止频率 Wn=(fp1+fs1)/fs;

[b,a]=fir1(N-1,Wn,window); [H,w]=freqz(b,1,512); db=20*log10(abs(H)); %db imagine t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); % 输入信号 FilterSignal=filter(b,1,Signal); subplot(2,2,1);

plot(w*fs/(2*pi),db);xlabel(' 频率 ');ylabel('db');title(' 滤波器的相对振幅 ');grid on; subplot(2,2,2);

plot(w*fs/(2*pi),angle(H));xlabel(' 频率 ');ylabel('angle(H)');title(' 滤波 器相 位响应 ');grid

on;

subplot(2,2,3);

plot(t,Signal);xlabel('t');ylabel('Signal');title(' 滤波前的信号波形 ');grid on; subplot(2,2,4);

plot(t,FilterSignal);xlabel('t');ylabel('FilterSignal');title(' 滤波后的信号波形 '); grid on;

高通滤波器的设计

高通滤波器允许信号中的高频分量通过,抑制低频或直流分量。程序如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %fs1=10,fp1=15;fs=100(wp1=;ws1=

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fs1=10; %高通阻带模拟截止频率 fp1=15; %高通通带模拟截止频率 fs=100; %采用频率

wp1=2*pi*fp1/fs; % 模拟转变为数字域的截止频率 ws1=2*pi*fs1/fs;

delta_w=wp1-ws1; %过渡带宽

N=ceil*pi/delta_w)+1;N=N+rem(N,2); window=boxcar(N+1)';

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=bartlett(N+1)';

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=hanning(N+1)';

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=hamming(N+1)';

%N=ceil(11*pi/delta_w)+1;N=N+rem(N,2); %window=blackman(N+1)';

%N=ceil(10*pi/delta_w)+1;N=N+rem(N,2); %window=kaiser(N+1)';

%理想 LPF的截止频率 Wn=(fp1+fs1)/fs;

[b,a]=fir1(N,Wn,'high',window); [H,w]=freqz(b,1,512); db=20*log10(abs(H)); %db imagine t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); % 输入信号 FilterSignal=filter(b,1,Signal); subplot(2,2,1);

plot(w*fs/(2*pi),db);xlabel(' 频率 ');ylabel('db');title(' 滤波器的相对振幅 ');grid on; subplot(2,2,2);

plot(w*fs/(2*pi),angle(H));xlabel(' 频率 ');ylabel('angle(H)');title(' 滤波 器相 位响应 ');grid on;

subplot(2,2,3);

plot(t,Signal);xlabel('t');ylabel('Signal');title(' 滤波前的信号波形 ');grid on; subplot(2,2,4);

plot(t,FilterSignal);xlabel('t');ylabel('FilterSignal');title(' 滤波后的信号波形 '); grid on;

带通滤波器的设计

带通滤波器允许一定频段的信号通过,抑制低于或高于该频段的信号、干扰和噪声。程序如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %fp1=20;fp2=30;fs1=10;fs4=40;fs=100

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[ ],100);

fp1=20; %带通通带模拟截止频率

fp2=30; %带通通带模拟截止频率

fs1=10;

fs2=40;

fs=100;

wp1=2*pi*fp1/fs;% 数字域的截止频率

wp2=2*pi*fp2/fs;

ws1=2*pi*fs1/fs;

ws2=2*pi*fs2/fs;

deltaw1=wp1-ws1; %Transition bandwidth

deltaw2=ws2-wp2;

delta_w=min(deltaw1,deltaw2);

N=ceil*pi/delta_w)+1;

window=boxcar(N+1);

%N=ceil*pi/delta_w)+1;

%window=bartlett(N+1);

%N=ceil*pi/delta_w)+1;

%window=hanning(N+1);

%N=ceil*pi/delta_w)+1;

%window=hamming(N+1);

%N=ceil(11*pi/delta_w)+1;

%window=blackman(N+1);

%N=ceil(10*pi/delta_w)+1;

%window=kaiser(N+1);

b=fir1(N,[wp1/pi wp2/pi],window);

[H,w]=freqz(b,1,512);

db=20*log(abs(H));

t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);% 输入信号 FilterSignal=filter(b,1,Signal); subplot(2,2,1);

plot(w*fs/(2*pi),db);xlabel(' 频率 ');ylabel('db');title(' 滤波器的相对振幅 ');grid on; subplot(2,2,2);

plot(w*fs/(2*pi),angle(H));xlabel(' 频率 ');ylabel('angle(H)');title(' 滤波 器相 位响应 ');grid on;

subplot(2,2,3);

plot(t,Signal);ylabel('Signal');title('滤波前的信号波形 ');grid on; subplot(2,2,4);

plot(t,FilterSignal);xlabel('t');ylabel('FilterSignal');title(' 滤波后的信号波形 ');grid on;

带阻滤波器的设计

带阻滤波器抑制一定频段内的信号,允许该频段以外的信号通过。程序如下:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %fp1=10;fp2=40;fs1=20;fs2=30;fs=100;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[ ],100); fp1=10; %带通通带模拟截止频率 fp2=40; %带通通带模拟截止频率 fs1=20; fs2=30; fs=100;

wp1=2*pi*fp1/fs; wp2=2*pi*fp2/fs;

ws1=2*pi*fs1/fs;% 数字域的截止频率 ws2=2*pi*fs2/fs; delta1=ws1-wp1; delta2=wp2-ws2;

delta_w=min(delta1,delta2); %过渡带宽 N=ceil*pi/delta_w)+1;N=N+rem(N,2); window=boxcar(N+1);

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=bartlett(N+1);

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=hanning(N+1);

%N=ceil*pi/delta_w)+1;N=N+rem(N,2); %window=hamming(N+1);

%N=ceil(11*pi/delta_w)+1;N=N+rem(N,2); %window=blackman(N+1);

%N=ceil(10*pi/delta_w)+1;N=N+rem(N,2); %window=kaiser(N+1);

b=fir1(N,[ws1/pi ws2/pi],'stop',window); [H,w]=freqz(b,1,512); db=20*log(abs(H)); t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);% 输入信号 FilterSignal=filter(b,1,Signal); subplot(2,2,1);

plot(w*fs/(2*pi),db);xlabel(' 频率 ');ylabel('db');title(' 滤波器的相对振幅 ');grid on;

subplot(2,2,2);

plot(w*fs/(2*pi),angle(H));xlabel(' 频率 ');ylabel('angle(H)');title(' 滤波 器相 位响应 ');grid on;

subplot(2,2,3);

plot(t,Signal);ylabel('Signal');title('滤波前的信号波形 ');grid on; subplot(2,2,4);

plot(t,FilterSignal);xlabel('t');ylabel('FilterSignal');title(' 滤波后的信号波形 ');grid on;

3 基于 MATLAB GUI 的 FIR 滤波器的仿真 FIR 数字滤波器设计所实现的任务

[6]中介绍了 GUI 设计工具应用的平台。 应用 MATLAB GUI设计一个界面友好的仿真软件,完成 GUI 界面的设计和回调函数的编写。它所能实现的任务有: (1)、能够实现人机交换。

(2)、能够选择 Boxar、Bartlett 、Hanning、 Hamming、Blackman、 Kaiser窗设计 滤波器。

(3)、在 FilterType 中能够选择 Lowpass、 Highpass、 Bandpass、Bandstop。 (4)、在 DisplayType中能够选择 Linear、Logarithmic 两种不同的图形显示类型。 (5)、根据输入的数据计算并显示系统的最小阶数。

(6)、根据输入的参数,得到通带波动系数 Rp、最小阻带衰减系数 Rs。

FIR 数字滤波器界面设计

[7]中给出了 GUI 有以下四种启动方式: (1)、在命令行窗口中输入 guide; (2)、点击 matlab 界面上面的菜单中的

图标;

(3)、在 START菜单中选 MATLAB|GUIDE(GUI Builder); (4)、在 MATLAB File菜单中选 New|GUI。

本设计用的第一种方式设计 GUI 界面。点击 guide 界面上方的 Run 按钮,会生成一个 fig 文件,一个 m 文件,其中 fig 文件就是界面的图形, m 文件是界面的回调函数, 在 m 文件里完成回调函数的编写。设计如下图 3-1 所示的图形主面板,共包括 4 个 区域:

(1)图形区:用于显示各模块的仿真曲线。

(2)参数设区:由静态文本框和编辑框以及类型选择按纽组成 , 实时的进行系统参 数的设定和滤波器原型的选定。

(3)对象模型区:实现设计结果的实时刷新与显示。 (4)数据显示区:对应于图形显示结果。

图 3-1

FIR 数字滤波器函数的编写 菜单 FilterType 的回调函数

在下拉菜单 FilterType 中选择滤波器类型

因为界面 FilterType 默认的是 lowpass 选项,所以 GUI 初始化时把第二个临界频率控件隐藏起来, Fp2、Fs2控件的 visible 设置为 off 状态,选择带通或带阻滤波器时就把这几个控件显示出来, 选择低通或者高通滤波器时, 隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,程序和效果如图 3-2、3-3 所示: function FilterType_Callback(hObject, eventdata, handles) FilterType_value=get,'Value');%

if (FilterType_value==1)||(FilterType_value==2)

set,'visible','off');set,'visible','off');

set,'visible','off');set,'visible','off');%Fp2 set,'visible','off');set,'visible','off');%Fs2

else if (FilterType_value==3)||(FilterType_value==4)

set,'visible','on');set,'visible','on');

set,'visible','on');set,'visible','on');%Fp2 set,'visible','on');set,'visible','on');%Fs2 end

end

图 3-2 初始化或选择 lowpass、 highpass

显示类型 DispType 的函数

图 3-3 选择 bandpass、bandstop

滤波器的幅度特性有两种方式显示,设计的程序如下:

if (DisplayTypeValue==1) %select Linear

axes;

plot(w*FsValue/(2*pi),abs(H)); grid on;

else %select Logarithmic

axes;

plot(w*FsValue/(2*pi),db);

grid on; %set(gca,'XTickMode','manual','XTick',[0,3,5,10]);

end

阶数 N 和最小阶数 N 按钮的函数

在设计滤波器阶数时, 在输入用户所希望的设计滤波器的阶数后系统自动计算并显示

最小阶数 N。为了防止用户自动输入该最小参数 N,在文本框属性的: Enable 项设为 off ,禁止输入参数。涉及的程序如下: N_Value=str2double(get,'String'));%读取 N 值

N=N_Value;

b=fir1(N-1,Wn,windows); %Fir1 to caculate the b set,'string',num2str(M));% 将得到的滤波器的最小阶数显示在 “最小阶数 N”框上。

文本编辑框的回调函数

参数输入时,在输入抽样频率 Fs 的前提下,判断滤波器通带临界频率( Fp1、Fp2)、滤波器阻带临界频率( Fs1、Fs2)的归一化频率 wp1 、 wp2、ws1、 ws1 是否在 [0,1] 之间,如不正确显示错误对话框,其程序和效果如图 3-4 所示: function Fp1Value_Callback(hObject, eventdata, handles) FsValue=str2double(get,'String')); Fp1Value=str2double(get,'String')); wp1=2*Fp1Value/FsValue; if (wp1>=1)

errordlg('wp1=2*Fp1/Fs is not in [0,1],please check input number');

end

图 3-4 输入参数错误信息框显示Fp2、

Fs1、Fs2的回调函数同理编程。

滤波器波形按钮的回调函数

根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下: function FilterWave_Callback(hObject, eventdata, handles) FilterWave(handles) %点击该按钮后自动运行文件。

文本框 Rp 和 Rs 的函 数

系统根据输入的参数自动计算滤波器的通带波动和最小阻带衰减并显示在文本

框中,为了防止用户自动输入该两个参数,在文本框属性的: Enable 项设为 off,禁止输入参数。以下程序为低通滤波器部分,其他的详情请查看附录程序。

%why is 1000 delta_w=2*pi/1000;

wpi=floor(wp1/delta_w)+1; %对 wp1/delta_w 取最近的整数

Rp=-min(db(1:1:wpi)); %Passband Ripple实际通带波动

set,'string',num2str(Rp));%display Passband Ripple

%对 ws1/delta_w 取最近的整数 wsi=floor(ws1/delta_w)+1;

Rs=-round(max(db(wsi:1:501))); %MinStopband attenuation 最小阻带衰减

set,'string',num2str(Rs));%display MinStopband attenuation

产生信号按钮的回调函数

回调函数程序如下:

fs=100;

t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); %???????? axes;

plot(t,Signal); grid on;

滤波后的信号按钮的回调函数

function FilterSignal_Callback(hObject, eventdata, handles) FilterSignal(handles)

当点击该按钮后运行程序, 该程序在的基础上加上了产生信号的程序滤波后显示在界面上。

按钮 Quit 的回调函数

退出滤波器设计窗口,其程序如下:

function Quit_Callback(hObject, eventdata, handles) close

总程序的编写

[7] 给出了附件 1、附件 2 的程序,见附件

4 实验结果与显示

1 运行和结果显示

在图形界面下 ,选择要设计的滤波器选项,编辑框中输人要求设计的数字滤波器的性能指标 , 选择“滤波器波形”命令按钮 , 出现响应类型的滤波器的图形。 2 显示不同窗函数的显示结果

5 结束语

GUI 是实现人机交互的友好界面, 具有强大的功能, [8] 中说明了 GUI 可以完成许多复杂的程序模块。 对于 GUI 在数字信号处理中的应用中, 数字信号处理这门学科的知识是基础,要掌握数字信号处理的相关知识的原理后, 并用代码来实现, 才能很好地结 合 MATLAB进行 GUI 编程。

6 感谢

本文从资料的搜集、文章的修改到最后的定稿,自始至终都得到了导师魏武老师

的悉心指导,很感谢魏武老师对我的毕业设计给予时间宽限上的支持, 在毕业设计中给予无私的指导与帮助才使我能够在有限的时间里完成了毕业设计任务。 同时感谢在我完成毕业设计过程中给予我关心以及帮助的同学们。

7 参考文献

[1] 张志田、何其文 .基于窗函数法的 FIR 数字滤波器的设计 [J].湖南科技学院学报.2007 年第 9 期

[2] 张登奇、李望移 .基于 MATLAB 的 FIR 数字滤波器设计 [J].计算机时代 .2007 年第 11 期

[3] 用 matlab 实现 fir 滤波器的设计 [J]. 王艳芬等 .数字信号处理原理及实现 [M]. 北京.清华大学出版社, 2008

[5] 曹弋 .MATLAB教程及实训 [M]. 北京 .机械工业出版社, [6] 基于 MATLAB_GUI的滤波器设计软件 [J].

陈垚光等 .精通 MATLAB GUI设计 .北京 .电子工业出版社,

[8] 飞思科技产品研发中心 .MATLAB 7 辅助信号处理技术与应用 .北京 .电子工业出版社, 2005

附录

因篇幅问题不能全部显示,请点此查看更多更全内容