您好,欢迎来到微智科技网。
搜索
您的当前位置:首页MATLAB-GUI设计FIR滤波器(窗函数)

MATLAB-GUI设计FIR滤波器(窗函数)

来源:微智科技网
--

1 数字滤波器的概述 ................................................................................................ 错误!未定义书签。

1.1 FIR数字滤波器设计原理 ........................................................................ 错误!未定义书签。 1.2 FIR数字滤波器的特性ﻩ错误!未定义书签。

1.3 窗函数的介绍............................................................................................ 错误!未定义书签。 2 FIR数字滤波器设计及实现ﻩ错误!未定义书签。

2.1 低通滤波器的设计 ................................................................................... 错误!未定义书签。 2.2 高通滤波器的设计 ...................................................................................... 错误!未定义书签。 2.3 带通滤波器的设计ﻩ错误!未定义书签。 2.4 带阻滤波器的设计 .................................................................................... 错误!未定义书签。 3基于MATLAB GUI的FIR滤波器的仿真 ....................................................... 错误!未定义书签。

3.1 FIR数字滤波器设计所实现的任务 ......................................................... 错误!未定义书签。 3.2 FIR数字滤波器界面设计ﻩ错误!未定义书签。 3.3 FIR数字滤波器函数的编写ﻩ错误!未定义书签。

3.3.1 菜单FilterType的回调函数 ...................................................... 错误!未定义书签。 3.3.2 显示类型DispType的函数 ................................................. 错误!未定义书签。 3.3.3 阶数N和最小阶数N按钮的函数 ........................................... 错误!未定义书签。 3.3.4 文本编辑框的回调函数ﻩ错误!未定义书签。

3.3.5 滤波器波形按钮的回调函数 ........................................................ 错误!未定义书签。 3.3.6 文本框Rp和Rs的函 数........................................................ 错误!未定义书签。 3.3.7 产生信号按钮的回调函数18ﻩ

3.3.8 滤波后的信号按钮的回调函数 ....................................................... 错误!未定义书签。 3.3.9 按钮Quit的回调函数 ................................................................ 错误!未定义书签。 3.4总程序的编写ﻩ错误!未定义书签。 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 Fil

ter base on ATLAB

LI Honghua

Information Science & Technology School, Zhanjiang Normal University, zh

anjiang, 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 数字滤波器的概述

1.1 FIR数字滤波器设计原理

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

H(z)h(k)zkk0M

M滤波器的输出:y(k)h(k)x(k)h(i)x(ki)i0

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

在这里我们利用窗函数法设计FIR滤波器。给定所要求的滤波器的频率响应Hd ( ejw) , 要求设计一个FIR 滤波器的频率响应H( ejw) 来逼近Hd( ejw) .设计是在时域进行的, 首先由傅立叶变换导出无限长的序列hd( n) , 然后用窗函数截断hd ( n) ,即: h( n) = hd( n) w( n)。 1.2 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(e)H(z)|zejh(n)ejnH()ej()jn0N1

(1-2-1)

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

Im(H(ej))()arctan()RE(H(ej))

(1-2-2)

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

(1)第Ⅰ种类型:h(n)为偶对称,且N为奇数 根据式:H()h(n)cos[(n0(N1)/2N1N1n)]可以得到滤波器的幅频函数为: 2H()n0a(n)cos(n)

(1-2-3) 其中a(0)h(呈偶对称。

(2)第Ⅱ种类型:h(n)为偶对称,且N为偶数 根据式:H()h(n)cos[(n0N/2N1N1NN1。幅度函数H()对0,,2),a(n)2h(n),n1,2,…,222N1n)]可得滤波器的幅频函数为: 21H()b(n)cos(n)2n1

(1-2-4) 其中:b(n)2h(NNn),n1,2,…,。幅度函数H()对于0或2呈偶对称。如果22数字滤波器在处不为零,如本文设计的高通滤波器和带阻滤波器则不能用这一类型。

--

--

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

N1n)可得滤波器的幅频函数为: 根据式:H()h(n)sin(2n0(N1)/2N1H()n1c(n)sin(n)

(1-2-5)

N-1N其中c(n)2hn,n1,2,…,。数字滤波器在=0,,2处不为零如低

22通滤波器、高通滤波器、带阻滤波器,则不适合用这类滤波器来设计。 (4)第Ⅳ种类型:h(n)为奇对称,且N为偶数

N1n)可得滤波器的幅频函数可表示为: 根据式:H()h(n)sin(2n01H()d(n)sin(n)2n1N/2N1

(1-2-6)

NN其中:d(n)2hn,n1,2,…,。幅度函数H()对于呈偶对称。如果

22数字滤波器在0,2处不为零如低通滤波器、带阻滤波器,则不适合用这类数字滤波器来设计。 1.3 窗函数的介绍

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

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

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

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

以下是几种窗函数的性能比较:

--

--

窗函数 旁瓣峰值衰等效凯塞尔主瓣过渡带精确过渡带最小阻带衰减(dB) 矩形窗 三角窗 汉宁窗 海明窗 -13 -25 -31 -41 窗() 0 1.33 3.86 4.86 7.04 7.865 宽() 4/N 8/N 8/N 8/N 12/N 10/N 宽() 1.8/N 6.1/N 6.2/N 6.6/N 11/N 10/N 减(Db) -21 -25 -44 -53 -74 -80 布莱克曼窗 -57 凯赛尔窗 -57 想详细了解以上几个窗函数请查阅参考文献[4]或者用命令wvtool(windows(N))查看。

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

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%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(1.8*pi/delta_w)+1;%最小阶数N window=boxcar(N)';

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

--

--

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

%N=ceil(6.6*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)';

Wn=(fp1+fs1)/fs; %理想LPF的截止频率 [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;

--

--

2.2 高通滤波器的设计

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%fs1=10,fp1=15;fs=100(wp1=0.3pi;ws1=0.2pi)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

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

delta_w=wp1-ws1; %过渡带宽

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

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

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

%N=ceil(6.6*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)';

Wn=(fp1+fs1)/fs; %理想LPF的截止频率 [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; 2.3 带通滤波器的设计

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],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(1.8*pi/delta_w)+1; window=boxcar(N+1);

%N=ceil(6.1*pi/delta_w)+1; %window=bartlett(N+1); %N=ceil(6.2*pi/delta_w)+1; %window=hanning(N+1); %N=ceil(6.6*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; 2.4 带阻滤波器的设计

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],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(1.8*pi/delta_w)+1;N=N+rem(N,2); window=boxcar(N+1);

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

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

%N=ceil(6.6*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滤波器的仿真 3.1 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。 3.2 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

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

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

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

function FilterType_Callback(hObject, eventdata, handles) FilterType_value=get(handles.FilterType,'Value');% if (FilterType_value==1)||(FilterType_value==2)

set(handles.Fp2Value,'visible','off');set(handles.Fs2Value,'visible','off');

set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');%Fp2 set(handles.text37,'visible','off');set(handles.text39,'visible','of

--

--

f');%Fs2

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

set(handles.Fp2Value,'visible','on');set(handles.Fs2Value,'visible','on');

set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on');%Fp2

set(handles.text37,'visible','on');set(handles.text39,'visible','on');%Fs2 end end

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

3.3.2 显示类型DispType的函数

滤波器的幅度特性有两种方式显示,设计的程序如下: if (DisplayTypeValue==1) %select Linear

--

--

ﻩaxes(handles.Magnitude);

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

else %select Logarithmic ﻩaxes(handles.Magnitude);

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

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

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

在设计滤波器阶数时,在输入用户所希望的设计滤波器的阶数后系统自动计算并显示最小阶数N。为了防止用户自动输入该最小参数N,在文本框属性的:Enable项设为off,禁止输入参数。涉及的程序如下:ﻩN_Value=str2double(get(handles.N_Value,'String'));%读取N值 N=N_Value;

b=fir1(N-1,Wn,windows); %Fir1 to caculate the b set(handles.min_N_Value,'string',num2str(M));%将得到的滤波器的最小阶数显示在“最小阶数N”框上。 3.3.4 文本编辑框的回调函数

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

Fp1Value=str2double(get(handles.Fp1Value,'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的回调函数同理编程。 3.3.5 滤波器波形按钮的回调函数

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

ﻩ系统根据输入的参数自动计算滤波器的通带波动和最小阻带衰减并显示在文本框中,为了防止用户自动输入该两个参数,在文本框属性的:Enable项设为off,禁止输入参数。以下程序为低通滤波器部分,其他的详情请查看附录程序。 delta_w=2*pi/1000; %why is 1000 wpi=floor(wp1/delta_w)+1; %对wp1/delta_w取最近的整数

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

set(handles.RpValue,'string',num2str(Rp));%display Passband Ripple wsi=floor(ws1/delta_w)+1; %对ws1/delta_w取最近的整数

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

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

--

--

3.3.7 产生信号按钮的回调函数 回调函数程序如下: fs=100; t=(0:200)/fs;

Signal=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30); %•••••••• axes(handles.SignalDisplay); plot(t,Signal); grid on;

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

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

当点击该按钮后运行FilterSignal.m程序,该程序在FilterWave.m的

基础上加上了产生信号的程序滤波后显示在界面上。 3.3.9 按钮Quit的回调函数

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

function Quit_Callback(hObject, eventdata, handles) close 3.4总程序的编写

ﻩ[7]给出了附件1、附件2的程序,见附件 4 实验结果与显示 1 运行和结果显示

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

--

--

5 结束语

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

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

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

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

院学报.2007年第9期

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

07年第11期

[3] 用matlab实现fir滤波器的设计[J]. http://wenku.baid

u.com/view/dfa11322aaea998fcc220e78.html

[4] 王艳芬等.数字信号处理原理及实现[M].北京.清华大学出版社,2008 [5] 曹弋.MATLAB教程及实训[M].北京.机械工业出版社,2008.05 [6] 基于MATLAB_GUI_的滤波器设计软件[J].

http://wenku.baidu.com/view/b102840d6c85ec3a87c2c531.htm

[7] 陈垚光等.精通MATLAB GUI设计.北京.电子工业出版社,2008.02 [8] 飞思科技产品研发中心.MATLAB 7辅助信号处理技术与应用.北京.电子工

业出版社,2005 附录

--

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

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务