基于MATLAB的数字信号处理的课程设计报告

时间:2024.4.8

一、     课程设计(综合实验)的目的与要求

目的与要求:

1.    掌握《数字信号处理基础》课程的基本理论;

2.    掌握应用MATLAB进行数字信号处理的程序设计;

实验内容

已知低通数字滤波器的性能指标如下:

要求:

1.       选择合适的窗函数,设计满足上述指标的数字线性相位FIR低通滤波器。用一个图形窗口,包括四个子图,分析显示滤波器的单位冲激响应、相频响应、幅频响应和以dB为纵坐标的幅频响应曲线。

2.       用双线性变换法,设计满足上述指标的数字Chebyshev I型低通滤波器。用一个图形窗口,包括三个子图,分析显示滤波器的幅频响应、以dB为纵坐标的幅频响应和相频响应。

3.       已知模拟信号          

其中,取采样频率

要求:

(1)    以进行取样,得到。用一个图形窗口,包括两个子图,分别显示以及()的波形;

(2)    用FFT对进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最少点数,并用一个图形窗口,包括两个子图,分别显示以及的幅值;

(3)    用要求1中设计的线性相位低通数字滤波器对进行滤波,求出滤波器的输出,并用FFT对进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最少点数,并用一个图形窗口,包括四个子图,分别显示)、)和的幅值;

(4)    用要求2中设计的Chebyshev低通数字滤波器对进行滤波,求出滤波器的输出,并用FFT对进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最少点数,并用一个图形窗口,包括四个子图,分别显示)、)和的幅值。

备注:

(1) 要求编写一个主程序,完成上述问题。

(2) 要求各结果图均标出图题以及横纵轴的名称。

(3) 要求给主要语句加上标注。

设计思路

1. 在任务一中,最小阻带衰减As=50dB,则就此可以确定所要选择的窗函数为哈明窗。

2.  对于任务二,根据通带频率wp,阻带频率ws,通带衰减Rp,阻带衰减As,计算出所设计的切比雪夫滤波器阶数,极点等重要参数。

3.    对连续时间信号进行采样,得到,根据要求绘制出子图。

4.    频率分辨率等于采样频率除以采样点数,据此可以计算出一个记录中的最少点数,执行函数fft,可以将x(n)经过傅里叶变换求出X(k)。

5.    用线性相位低通数字滤波器对进行滤波,在设计低通数字滤波器时已经求出了单位冲击响应序列h(n),那么将采样得到的序列x(n)与h(n)进行卷积,就可以得到滤波器的输出,经过fft变换后,可以对进行频谱分析。

6.    用Chebyshev低通数字滤波器对进行滤波时,由于设计时能够将切比雪夫滤波器系统函数(z域,双线性变换变换的表达式)的零极点均已求出,那么就可以调用filter函数求出,最后将得到滤波器的输出进行fft变换,对进行频谱分析,按要求画出相应的子图。

实验结果:

数字线性相位FIR低通滤波器


数字Chebyshev I型低通滤波器

 


进行取样

用FFT对进行谱分析

 


线性相位低通数字滤波器对进行滤波

 


Chebyshev低通数字滤波器对进行滤波

 


程序代码

主程序:

clear;

%任务一:

%窗口函数的设计

wp=0.26*pi;

ws=0.41*pi;

tr_width=ws-wp;%带宽

N1=ceil(6.6*pi/tr_width)+1;%阶数

n=0:N1-1;

wc=(ws+wp)/2;%理想低通的截止频率

hd=ideal_lp(wc,N1);%理想低通的冲击响应

w_ham=(hamming(N1))';

h=hd.*w_ham;%FIR滤波器的冲击响应

[db,mag,pha,grd,w]=freqz_m(h,[1]);

delta_w=2*pi/1000;

%作图

figure(1);

subplot(2,2,1);

stem(n,h,'r');

axis([0 46 -0.1 0.4]);

title('单位冲击响应');

subplot(2,2,2);

plot(w/pi,pha,'r');

axis([0 1 -4 4]);

title('相频响应');

subplot(2,2,3);

plot(w/pi,mag,'r');

axis([0 0.8 0 1.1]);

title('幅频响应');

subplot(2,2,4);

plot(w/pi,db,'r');

axis([0 0.8 -100 10]);

title('幅频响应(dB)');xlabel('以\pi为单位的频率');ylabel('对数幅度/dB');

%任务二;

%切比雪夫滤波器的设计

Rp=0.75;

As=50;

T=1;

Fs=1/T;

omegap=(2/T)*tan(wp/2);

omegas=(2/T)*tan(ws/2);

[cs,ds]=cheb(omegap,omegas,Rp,As);%调用函数求解拉普拉斯变换的分子与分母多项式的系数数组

[b,a]=bilinear(cs,ds,Fs);%做双线性变换

[db,mag,pha,grd,w]=freqz_m(b,a);%频域上采样并记录幅频和相频响应

%作图

figure(2);

subplot(3,1,1);

plot(w/pi,mag);

title('幅度响应');grid;

axis([0 0.6 0 1.1]);ylabel('幅度');xlabel('以\pi为单位的频率');

subplot(3,1,2);

plot(w/pi,db);title('幅频响应(dB)');grid;

axis([0 0.6 -60 10]);xlabel('以\pi为单位的频率');ylabel('对数幅度/dB');

subplot(3,1,3);

plot(w/pi,pha);title('相频响应');grid;

axis([0 0.6 -4 4]);xlabel('以\pi为单位的频率');ylabel('相位');

%任务三:

fs=10000;

f(1)=120;

f(2)=4980;

f(3)=3250;

f(4)=1150;

Nq=512;

nq=0:Nq-1;

xg=2*cos(2*pi*f(1)*nq/fs)+5*sin(2*pi*f(2)*nq/fs)+8*cos(2*pi*f(3)*nq/fs)+7.5*cos(2*pi*f(4)*nq/fs);%模拟信号采样的表达式

%作图

figure(3);

subplot(2,1,1);

fplot('xat',[0,511],'c');

title('x(t)');

axis([0,512,-24,24]);

subplot(2,1,2);

stem(nq,xg,'r');

title('x(n)');

axis([0,512,-25,25]);

%任务四:

Nx=fs/5;

nq1=0:Nx-1;

xg1=2*cos(2*pi*f(1)*nq1/fs)+5*sin(2*pi*f(2)*nq1/fs)+8*cos(2*pi*f(3)*nq1/fs)+7.5*cos(2*pi*f(4)*nq1/fs);

fprintf('\n***最少点数Nx=%2.0f\n',Nx);

Xkc=fft(xg1,Nx);%fft

Akc=abs(Xkc);%幅度

%作图

figure(4);

subplot(2,1,1);

stem(nq1,xg1);

axis([0,Nx-1,-25,25]);

title('x(n)');

subplot(2,1,2);

stem(nq1,Akc,'r');

title('X(k)');

%任务五:

Ny1=fs/5;

fprintf('\n***y1(n)最少点数Ny1=%2.0f\n',Ny1);

[y1]=conv(h,xg1);%求卷积

Y0=fft(y1);%fft

Y1=abs(Y0);

%作图

figure(5);

subplot(4,1,1);

stem(nq1,xg1,'r');

axis([0,Ny1-1,-25,25]);

title('x(n)');

subplot(4,1,2);

stem(nq1,Akc,'pc');

title('X(k)');

subplot(4,1,3);

n2=1:N1+Ny1-1;

stem(n2,y1);

axis([0,2100,-12,12]);

title('y1(n)');

subplot(4,1,4);

stem(n2,Y1,'c');

axis([0,2100,0,7500]);

title('Y1(k)');

%任务六:

Ny2=fs/5;

n3=1:Ny2;

fprintf('\n***y2(n)最少点数Ny2=%2.0f\n',Ny2);

y2=filter(b,a,xg1);%滤波

Y2=abs(fft(y2));

%作图

figure(6);

subplot(4,1,1);

stem(nq1,xg1,'r');

axis([0,Ny1-1,-25,25]);

title('x(n)');

subplot(4,1,2);

stem(nq1,Akc,'pc');

title('X(k)');

subplot(4,1,3);

stem(n3,y2);

axis([0,2000,-12,12]);

title('y2(n)');

subplot(4,1,4);

stem(n3,Y2,'c');

title('Y2(k)');

调用的函数

1.function [M,x]=cheb(wp,ws,Rp,As)

ep=sqrt(10^(Rp/10)-1);

omegac=2*tan(wp/2);

omegar=ws/wp;

N=ceil(acosh(sqrt(10^(As/10)-1)/ep)/acosh(omegar));

af=ep^(-1)+sqrt(ep^(-2)+1);

a=0.5*(af^(1/N)-af^(-1/N));

b=0.5*(af^(1/N)+af^(-1/N));

A=-a*omegac;

B=b*omegac;

D=1;

for i=0:N-1

    p(i+1)=A*sin((2*i+1)/(2*N)*pi);

    q(i+1)=B*cos((2*i+1)/(2*N)*pi);

    w(i+1)=p(i+1)+j*q(i+1);

    D=D*w(i+1);

end

fprintf('\n***切比雪夫滤波器的阶数N=%2.0f\n',N);

fprintf('\n***切比雪夫滤波器的极点:\n');

w

for k=1:N

    u(k)=abs(w(k));

end

u

if max(u)<1

    fprintf('\n***系统稳定\n');

end

if(rem(N,2)==1)

    L=abs(D);

else

    L=abs(1/sqrt(1+ep^2)*D);

end

fprintf('\n***切比雪夫滤波器的系数:\n');

L

    M=[zeros(1,N-1),L];

    x=real(poly(w));

   

2. function [db,mag,pha,grd,W]=freqz_m(b,a)

[H,W]=freqz(b,a,1000,'whole');

H=(H(1:1:501))';

W=(W(1:1:501))';

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

grd=grpdelay(b,a,W);

grd=grd';

3. function hd=ideal_lp(wc,M)

alpha=(M-1)/2;

n=0:M-1;

m=n-alpha+eps;

hd=sin(wc*m)./(pi*m);

4. function y=xat(t)

y=2*cos(2*pi*120*t)+5*sin(2*pi*4980*t)+8*cos(2*pi*3250*t)+7.5*cos(2*pi*1150*t);

三、课程设计(综合实验)总结或结论

通过本次的课程设计使我对FIR与IIR滤波器有了更加深入地了解:IIR滤波器的系统函数是有理分式,分母对应于反馈支路,它是递归结构的系统,所以只有当所有极点都在单位圆内时滤波器才稳定。FIR滤波器的系统函数是多项式,是非递归结构,它只在原点处有一个N阶极点,因而系统稳定。

另外在本次的课设过程中我学会了MATLAB的使用,掌握了MATLAB内部函数的调用方法,通过查询MATLAB函数手册使我能够在遇到问题时准确清楚地了解函数中各个参数代表的的实际意义,这在设计滤波器过程中大大提高了设计效率。最后在本次的实践过程中让我对数字信号处理部分知识点理解也更加透彻,总体收获颇丰。

四、参考文献

数字信号处理   姚天任,江太辉   第三版   华中科技大学出版社,2007


第二篇:MATLAB(IIR和FIR)数字信号处理课程设计


桂林电子科技大学

MATLAB课程设计报告

 


摘 要

面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各种图形对象, 如图形窗口菜单按钮、文本框等构建的用户界面。

MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

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


目 录

1设计任务.......................................................... 1

2  MATLAB GUI的简介................................................ 2

3 滤波器设计原理................................................... 3

3.1滤波器概述.................................................. 3

3.2 IIR数字滤波器.............................................. 4

3.2.1  IIR数字滤波器设计原理................................ 4

3.2.2  IIR滤波器设计思想.................................... 5

3.2.3  IIR滤波器设计编程实现................................ 6

3.3 FIR数字滤波器.............................................. 8

3.3.1  FIR数字滤波器设计原理................................ 8

3.3.2  FIR滤波器设计思想.................................... 9

4  基于Matlab GUI的数字滤波器设计思路及实现...................... 12

4. 1  GUI界面设计概述......................................... 12

4.2 “滤波器设计软件”设计所实现任务........................... 14

4.3 基于Matlab GUI的数字滤波器设计实现........................ 16

4.3.1 “滤波器设计软件”GUI界面设计........................ 16

4.3.2 “滤波器设计软件”回调函数编写....................... 17

4.3.3AutoChoose.m程序的编写................................ 22

4.4 运行和结果显示............................................. 28

5  设计总结和心得................................................. 33

5.1 设计总结................................................... 33

5.2 设计心得................................................... 34

Abstract.......................................................... 35

参考文献.......................................................... 36

附录


1设计任务

1 设计目的

1.巩固所学习过的关于数字信号处理的滤波器的设计

2.学习使用MATLAB GUI设计工具应用平面

2 设计要求

要求:“滤波器设计软件”设计

1、要有人机交互界面。

2、滤波器设计的类型、参数均有多个值可供选择。

3、当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱。

4、该软件可设计FIR或IIR型滤波器至少一种。

 

 

 

2  MATLAB GUI的简介

  MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

  MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

  MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。

   MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个

环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

3 滤波器设计原理

3.1滤波器概述

随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波器占有极其重要的地位。现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种, 即IIR (Infinite Impulse Response)无限长脉冲响应数字滤波器和FIR (Finite Impulse Response)有限长脉冲响应数字滤波器。从功能上分类, 可分为低通、高通、带通、带阻滤波器。

3.2 IIR数字滤波器

3.2.1  IIR数字滤波器设计原理

滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程:

     

相应的传输函数为:

设计IIR数字滤波器就是要确定传输函数中的系数或零极点增益A,使滤波器的频率特性满足给定的性能指标要求。设计原理主要包括两个方面:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在

, 先最误差此准则下求出滤波器传输函数的系数。根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。

3.2.2  IIR滤波器设计思想

IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤波器、椭圆(Ellipse)滤波器等,这些滤波器各有特点,供不同设计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求

    由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为Fs,归一化频率的计算公式是:

利用完全设计法设计数字滤波器的步骤:

(1)将设计指标归一化处理。

(2)根据归一化频率,确定最小阶数N 和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord 等。

(3)运用最小阶数N 设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2和ellip。如[B,A] = butter(N,Wn,'type') 设计'type'型巴特沃斯(Butterworth)滤波器filter。N为滤波器阶数,Wc为截止频率, type决定滤波器类型, type= high,设计高通IIR滤波器,ftype= stop,设计带阻IIR滤波器。

(4)再用freqz 函数验证设计结果。

3.2.3  IIR滤波器设计编程实现

例如选择设计IIR的Butterworth低通滤波器,其Fs=1000Hz,Fp1=300Hz,

Fs1=400Hz,Rp=3dB,Rs=15dB

程序和效果图(图2)如下:

Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB ,n=5 ;%设计指标

wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;%求归一化频率

[n,Wn]=buttord(wp1,ws1,Rp,Rs);% 确定butterworth 最小阶数N 和频率参数Wn

[B,A] = butter(N,Wn);%确定传递函数的分子、分母系数

[h,f]=freqz(b,a,Nn,Fs_value);%生成频率响应参数

plot(f,20*log(abs(h))) %画幅频响应图

plot(f,angle(h)); %画相频响应图

3.3 FIR数字滤波器

3.3.1  FIR数字滤波器设计原理

FIR具有突出的优点:系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器。因此FIR在数字信号处理中得到广泛的应用。对FIR的设计目标是在满足指标要求的情况下尽量减少滤波器的阶数。数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。FIR的冲激响应h ( k)是有限长的M 阶F IR DF系统函数可表示为

滤波器的输出

它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。若要逼近的理想滤波器的频率响应为常用的有巴特沃思滤波器、切比雪夫型滤波器和椭圆滤波器。

3.3.2  FIR滤波器设计思想

在这里我们利用窗函数法设计FIR滤波器。窗函数法的基本想法是选取某一种合适的理想频率选择性滤波器(这种滤波器总是有一个非因果,无限长的脉冲响应),然后将它的脉冲响应截断(或加窗)以得到一个线形相位和因果FIR滤波器。

窗函数法又称傅立叶级数法, 一般是先给定所要求的滤波器的频率响应Hd ( ejw) , 要求设计一个FIR 滤波器的频率响应H( ejw) 来逼近Hd( ejw) .设计是在时域进行的, 首先由傅立叶变换导出hd( n) , 因此hd( n) 一定是无限长的序列, 而h( n) 是有限长的, 即要用有限长的h( n) 来逼近无限长的hd( n) , 最有效的方法是截断hd ( n) , 或者说用一个有限长的窗口函数w( n) 来截取hd( n) , 即: h( n) = hd( n) w( n) , 因而窗函数的形状及长度的选择就很关键了. 在MATLAB 中常用的窗函数有矩形窗, Hanning 窗, Hamming 窗, Blackman 窗,Kaiser 窗等, 这些窗函数各有优缺点, 各有利弊, 默认值是Hamming 窗。

利用完全设计法设计数字滤波器的步骤:

(1)将设计指标归一化处理。

(2)根据归一化频率,选择函数buttord确定最小阶数N 和频率参数Wn。

(3)确定窗口值。Windows指定窗函数类型,默认为Hamming窗;可选Hanning、Hamming、Blackman、triangle、bartlett等窗,每种窗都可以由Matlab的相应函数生成。

(4)确定传递函数的分母系数。函数fir1的调用格式为B= fir1(n, Wn, 'ftype', Windows),同时选择在此函数中选择要设计的滤波器的类型。其中,n为滤波器阶数,Wc为截止频率ftype决定滤波器类型,ftype= high,设计高通FIR滤波器,ftype= stop,设计带阻FIR滤波器。

(5)再用freqz 函数验证设计结果。

3.3.3  FIR滤波器设计编程实现

例如选择设计FIR的Blackman窗的低通滤波器,其Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB

Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB ;n=5;%设计指标

wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;%求归一化频率

 [n,Wn]=buttord(wp1,ws1,Rp,Rs);% 确定的最小阶数N 和频率参数Wn

[b,a] = butter(N,Wn);%确定传递函数的分子、分母系数

w=blackman(n+1); %确定窗口值

b=fir1(n,wn,w);% 确定传递函数的分母系数

[h,f]=freqz(b,1); %生成频率响应参数

plot(f,20*log(abs(h))) %画幅频响应图

plot(f,angle(h)); %画相频响应图

                

基于Matlab GUI的数字滤波器设计

4.2 “滤波器设计软件”设计所实现任务

   “滤波器设计软件”设计所实现任务如下:

1、能够实现人机交互

2、在下拉Digital Filter菜单里选择IIR和FIR滤波器设计

3、当选择IIR滤波器时,能够选择巴特沃斯(Butterworth)、切比雪夫Ⅰ(ChebyshevⅠ)滤波器、切比雪夫Ⅱ(ChebyshevⅡ)滤波器、椭圆(Ellipse)滤波器

4、当选择FIR滤波器是,能够选择Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口设计滤波器

5、在下拉菜单Filter Type中选择滤波器类型,能够选择Lowpass、Highpass、Bandpass、Bandstop四种类型

6、在下拉菜单Display Type中选择图形显示类型,能够选择Linear、Logarithmic两种类型

7、在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数

8、在参数输入中,可输入抽样频率Fs、滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)、通带内最大衰减Rp、通带内最小衰减Rs

9、设计的滤波器的幅频响应和幅频响应显示在界面中

MATLAB中的属性控制非常多, 要设置哪些对象的属性, 哪些可以不设置, 都需针对具体问题具体分析解决。接下来再通过控件布置编辑器来设置控件的对齐方式及间距等, 以完善界面功能。按要求设计好的“滤波器设计软件”主面板见图4, 共包括5个区域:

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

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

(3)对象模型区:由下拉菜单选定数字滤波器类型, 当用户的输人参数发生变化时, 可通过单击响应的“ Run”按钮, 实现设计结果的实时刷新与显示

(4)数据显示区:对应于图形显示结果, 实时显示滤波器阶次和分子分母多项式系数。

图 4 “滤波器设计软件”主面板

4.3 基于Matlab GUI的数字滤波器设计实现

1、Digital Filter下拉菜单

在下拉Digital Filter菜单里选择IIR和FIR滤波器设计

选择IIR或者FIR屏蔽相应的选项,当选择IIR选项时,使FIR的Windows的选择窗口不能使用,程序和效果图(图8 、图9 )如下:

   function DigitalFilter_Callback(hObject, eventdata, handles)

%读取此时选择的滤波器选择,“IIR、FIR”

   DigitalFilter_value=get(handles.DigitalFilter,'Value');

          %当选择了IIR时,使窗口选项屏蔽

                 if(DigitalFilter_value==1)                     

                     set(handles.FilterDesign,'enable','on');

                     set(handles.Windows,'enable','off')

 %当选择了FIR时,使IIR的滤波器(Butterworth、 ChebyshevⅠ等)选项屏蔽

                 else

                      set(handles.FilterDesign,'enable','off');

                     set(handles.Windows,'enable','on')  

 end                  

               

图8  IIR滤波器选择                      图 9  FIR滤波器选择

2、Filter Type下拉菜单

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

选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,程序和效果图(图10 、图11 )如下:

function FilterType_Callback(hObject, eventdata, handles)

%读取此时设计的滤波器的类型,“Lowpass、Highpass、Bandpass、Bandstop”

FilterType_value=get(handles.FilterType,'Value');

%当选择Lowpass或者Highpass,屏蔽相应的临界频率的显示

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

            set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');

            set(handles.text17,'visible','off');set(handles.text19,'visible','off');

            set(handles.text6,'visible','off');set(handles.text10,'visible','off');                                     

         else

%当选择Bandpass或者Bandstop,使相应的临界频率的显示,使参数能够输入

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

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

            set(handles.text17,'visible','on');set(handles.text19,'visible','on');

set(handles.text6,'visible','on');set(handles.text10,'visible','on');                     

            end

        end

                                 

图10低通、高通滤波器频率参数输入   图11 低通、高通滤波器频率参数输入

3、Min Order和Custom Orde按钮

在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数 ,这里涉及的控件Min Order和Custom Order,其回调函数如下:

(1)按钮Min Order

选择使用最小阶数设置时,屏蔽自定义阶数的输入,如图12:

function MinOrder_Callback(hObject, eventdata, handles)

MinOrder_value=get(handles.MinOrder,'Value');

                 if(MinOrder_value==1)                     

                     set(handles.Order,'visible','off');

                 else

                      set(handles.Order,'visible','on');          

                 end

(2)按钮Custom Order

选择自定义阶数时,显示阶数输入框,如图13

function CustomOrderButton_Callback(hObject, eventdata, handles)

  CustomOrderButton_value=get(handles.CustomOrderButton,'Value');

                 if(CustomOrderButton_value==0)                     

                     set(handles.Order,'visible','off');

                 else

                      set(handles.Order,'visible','on');          

                 end

(3)其中涉及Run控件中的程序如下:

①显示最小阶数

set(handles.MinOrderDisplay,'string',num2str(n))

②当选择了自定义阶数时,读取自定义阶数

if(MinOrder_value==0)

     n=str2double(get(handles.Order,'String'))

end

            

图12 使用最小阶数设计Filter         图13 使用自定义阶数设计Filter

4、Fp1、Fp2、Fst1、Fst2文本编辑框

参数输入时,在输入抽样频率Fs的前提下,判断滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)的归一化频率wp1、 wp2、ws1、ws1是否在[0,1]之间,如不正确显示错误对话框,其程序和效果图(图14)如下:

function Fp1_Callback(hObject, eventdata, handles)

%检查输入的通带临界频率Fp1的归一化频率是否在[0,1]之间

Fs_value=str2double(get(handles.Fs,'String'));

Fp1_value=str2double(get(handles.Fp1,'String'));

wp1=2*Fp1_value/Fs_value;

%如果不在[0,1]之间,显示输入错误对话框

if(wp1>=1)

    errordlg(‘wp1=2*Fp1/Fs,归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)

end

图 14 输入参数错误信息框显示

Fp2、Fst1、Fst2的回调函数同理编程

5、Run按钮

根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下:

function Run_Callback(hObject, eventdata, handles)

%点击Run立即运行AutoChoose,m文件,实现滤波器设计程序

AutoChoose(handles)

6、Auto Run按钮

当选择了Auto Run按钮时,能够根据所选的IIR的滤波器(Butterworth、 ChebyshevⅠ等)、FIR的窗口选项、图形显示类型(Linear、Logarithmic)立即显示滤波器的幅频特性和相频特性图,其中IIR的滤波器(Butterworth、 ChebyshevⅠ等)的回调函数程序如下:

function FilterDesign_Callback(hObject, eventdata, handles)

AutoRun_value=get(handles.AutoRun,'Value');

%当选择了Filter(Butterworth、 ChebyshevⅠ等)中一种Filter运行AutoChoose,m文件

  if(AutoRun_value==1)

     AutoChoose(handles)

  end

7、Quit按钮

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

function Quit_Callback(hObject, eventdata, handles)

%点击Quti按钮退出

Close

4.3.3AutoChoose.m程序的编写

4.4 运行和结果显示

2        显示不同滤波器的显示结果

1、选择设计IIR低通滤波器,其Fs=1000Hz,Fp1=200Hz,Fs1=300Hz,

Rp=3dB,Rs=15dB,n=5,利用四种不同滤波器进行设计,如图17、18、19、20显示:

      

 图17  Butterworth低通滤波器          图18  ChebyshevⅠ低通滤波器

       

图19  ChebyshevⅡ低通滤波器           图20 Ellipse低通滤波器

2、选择设计FIR带通滤波器,其Fs=4000Hz,Fp1=1000Hz,Fp2=1500Hz,Fs1=800Hz, Fs2=1800Hz, Rp=3dB,Rs=15dB,n=5,利用带通滤波器进行Boxar和Bartlett设计,如图21、22显示:

  

   图21 Boxar窗带通滤波器             图22 Bartlett窗带通滤波器

设计总结和心得

5.1 设计总结

   GUI是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。使用它,需要具有一定的知识储备和必要的经验技巧。并且要充分利用好MATLAB 的帮助文档,仔细研读HELP是最好的办法。需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。

同时还需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。控件的使用主要是用好CreateFcn和Callback属性。CreateFcn中的语句就是在程序运行时,就立即执行脚本。如果希望界面可控,那么最好用Callback属性。在相应控件下,添加相应的脚本就可以实现比较复杂计算绘图等功能。 

在设计GUI的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。
    对于GUI在数字信号处理中的应用中,数字信号处理这门学科的知识是基础,要掌握数字信号处理的相关知识的原理后,并用代码来实现,才能很好地结合MATLAB进行GUI编程。

5.2 设计心得

实验之前,由于我们在大二下学期已经开始接触了MATLAB,而且这学期的数字信号处理课程也需要使用MATLAB进行数据处理,这为我们“滤波器软件的设计”提供了一定的基础,也就是可以利用以前的一些设计程序编写滤波器的实现。但由于这个设计是软件的设计,我们感觉还是有一定的难度,就感觉像是接触一个新的事物。不过,就像事物都是有内在联系的,在设计编程的时候我们发现我们可以利用以前学的C语言、Java语言的一些基础语言来编写回调函数。

在编写的过程中,我们出现了很多的小问题,如刚开始如何实现画图显示频谱图。这在我们的参考书中,都没有找到实现的方法,此时最好的帮手应该就是网络了。通过网上搜索我们发现了许多MATLAB GUI 各种控件的编程实现的方法,通过一点一点的理解程序的编写,同时也了解了一些编程的实现。还有利用好MATLAB 的帮助文档,也能起到事半功倍。

通过这次的课程设计我们巩固了数字信号处理课程中的滤波器的设计,也了解了利用MATALB创建图形用户界面GUI的知识,不管以后利用这个功能的机会多不多,我们都提过了学习新知识的能力,这也是我们应该要收获的能力。只有学会了学习,获得了学习的能力,才能为我们今后的再学习打下基础。

Abstract

 Facing the huge range of original signal, how to extract the required signal and suppress unwanted signals which need to use the filter. The role of filters is to select the desired signal frequency band and suppress the contents of the other bands do not need the contents of the signal. Digital filters because of their high accuracy, reliability, and flexibility advantages, in the speech signal processing, signal spectrum estimation, signal de-noising, the number of wireless communications in frequency as well as image processing and other projects are wide practical application. Impulse response functions in accordance with its time-domain characteristics can be divided into digital filter IIR (finite impulse response) and FIR (infinite impulse response). As a powerful software, MATLAB provides a graphical user interface to prepare the function. The so-called graphical user interface, referred to as the GUI, by a variety of graphic object, such as the graphics window menu button, text box, such as building a user interface.
   MATALB can create a graphical user interface GUI (GraphicalUser Interface), it is between user and computer tools. MATLAB support for all users GUl controls are integrated in this environment and provide the interface appearance and behavior in response to the way attribute settings methods, with the improved version, this capability will continue to strengthen. And a powerful graphics capabilities, can easily access to higher-quality curve.

Keywords: MATLAB  GUI  IIR filter   FIR filter

参考文献

1.程佩青编著.数字信号处理教程.第三版.北京:清华大学出版社,2007.2

2.徐成波 陶红艳 杨菁 杨如明编著.数字信号处理及MATLAB实现.第二版.北京:清华大学出版社,2008.1

3.王宏.MATLAB6.5及其在数字信号处理中的应用.北京:清华大学出版社

附 录

附主程序部分

function varargout = Filter(varargin)

% FILTER M-file for Filter.fig

%      FILTER, by itself, creates a new FILTER or raises the existing

%      singleton*.

%

%      H = FILTER returns the handle to a new FILTER or the handle to

%      the existing singleton*.

%

%      FILTER('CALLBACK',hObject,eventData,handles,...) calls the local

%      function named CALLBACK in FILTER.M with the given input arguments.

%

%      FILTER('Property','Value',...) creates a new FILTER or raises the

%      existing singleton*.  Starting from the left, property value pairs are

%      applied to the GUI before Filter_OpeningFunction gets called.  An

%      unrecognized property name or invalid value makes property application

%      stop.  All inputs are passed to Filter_OpeningFcn via varargin.

%

%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one

%      instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Filter

% Last Modified by GUIDE v2.5 03-Jun-2009 01:02:47

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                   'gui_Singleton',  gui_Singleton, ...

                   'gui_OpeningFcn', @Filter_OpeningFcn, ...

                   'gui_OutputFcn',  @Filter_OutputFcn, ...

                   'gui_LayoutFcn',  [] , ...

                   'gui_Callback',   []);

if nargin && ischar(varargin{1})

    gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

    gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before Filter is made visible.

function Filter_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% varargin   command line arguments to Filter (see VARARGIN)

% Choose default command line output for Filter

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes Filter wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = Filter_OutputFcn(hObject, eventdata, handles)

% varargout  cell array for returning output args (see VARARGOUT);

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

function Fs_Callback(hObject, eventdata, handles)

% hObject    handle to Fs (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Fs as text

%        str2double(get(hObject,'String')) returns contents of Fs as a double

% --- Executes during object creation, after setting all properties.

function Fs_CreateFcn(hObject, eventdata, handles)

% hObject    handle to Fs (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

function Fp1_Callback(hObject, eventdata, handles)

%¼ì²éÊäÈëµÄͨ´ø±ßԵƵÂÊÊÇ·ñ¡¾0£¬1¡¿

Fs_value=str2double(get(handles.Fs,'String'));

Fp1_value=str2double(get(handles.Fp1,'String'));

wp1=2*Fp1_value/Fs_value;

if(wp1>=1)

    errordlg('wp1=2*Fp1/Fs,‘归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)

end

% hObject    handle to Fp1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Fp1 as text

%        str2double(get(hObject,'String')) returns contents of Fp1 as a double

% --- Executes during object creation, after setting all properties.

function Fp1_CreateFcn(hObject, eventdata, handles)

% hObject    handle to Fp1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

function Fp2_Callback(hObject, eventdata, handles)

Fs_value=str2double(get(handles.Fs,'String'));

Fp2_value=str2double(get(handles.Fp2,'String'));

wp2=2*Fp2_value/Fs_value;

if(wp2>=1)

    errordlg('wp2=2*Fp2/Fs, ¹éÒ»»¯ÆµÂʲ»ÔÚ¡¾0£¬1¡¿·¶Î§ÄÚ£¬ÇëÊäÈëÕýÈ·µÄ²ÎÊý','´íÎóÐÅÏ¢')

end

% hObject    handle to Fp2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Fp2 as text

%        str2double(get(hObject,'String')) returns contents of Fp2 as a double

% --- Executes during object creation, after setting all properties.

function Fp2_CreateFcn(hObject, eventdata, handles)

% hObject    handle to Fp2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

function Fs1_Callback(hObject, eventdata, handles)

Fs_value=str2double(get(handles.Fs,'String'));

Fs1_value=str2double(get(handles.Fs1,'String'));

ws1=2*Fs1_value/Fs_value;

if(ws1>=1)

    errordlg('wp1=2*Fp1/Fs,‘归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)end

% hObject    handle to Fs1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Fs1 as text

%        str2double(get(hObject,'String')) returns contents of Fs1 as a double

% --- Executes during object creation, after setting all properties.

function Fs1_CreateFcn(hObject, eventdata, handles)

% hObject    handle to Fs1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

function Fs2_Callback(hObject, eventdata, handles)

Fs_value=str2double(get(handles.Fs,'String'));

Fs2_value=str2double(get(handles.Fs2,'String'));

ws2=2*Fs2_value/Fs_value;

if(ws2>=1)

    errordlg('ws2=2*Fs2/Fs, ¹éÒ»»¯ÆµÂʲ»ÔÚ¡¾0£¬1¡¿·¶Î§ÄÚ£¬ÇëÊäÈëÕýÈ·µÄ²ÎÊý','´íÎóÐÅÏ¢')

end

% hObject    handle to Fs2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Fs2 as text

%        str2double(get(hObject,'String')) returns contents of Fs2 as a double

% --- Executes during object creation, after setting all properties.

function Fs2_CreateFcn(hObject, eventdata, handles)

% hObject    handle to Fs2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

% --- Executes on selection change in FilterType.

function FilterType_Callback(hObject, eventdata, handles)

  FilterType_value=get(handles.FilterType,'Value');

                 if(FilterType_value==1)                     

                     set(handles.Fp2,'visible','off');

                     set(handles.Fs2,'visible','off');

                     set(handles.text17,'visible','off');

                     set(handles.text19,'visible','off');

                     set(handles.text6,'visible','off');

                     set(handles.text10,'visible','off');                   

                 else

                    if(FilterType_value==2)                     

                     set(handles.Fp2,'visible','off');

                     set(handles.Fs2,'visible','off');

                     set(handles.text17,'visible','off');

                     set(handles.text19,'visible','off');

                     set(handles.text6,'visible','off');

                     set(handles.text10,'visible','off');                     

                  else                      

                    if(FilterType_value==3)                     

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

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

                     set(handles.text17,'visible','on');

                     set(handles.text19,'visible','on');

                     set(handles.text6,'visible','on');

                     set(handles.text10,'visible','on');                     

                  else

                    if(FilterType_value==4)                     

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

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

                      set(handles.text17,'visible','on');

                     set(handles.text19,'visible','on');

                     set(handles.text6,'visible','on');

                     set(handles.text10,'visible','on');                    

                    end

                    end

                    end

                 end

% hObject    handle to FilterType (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns FilterType contents as cell array

%        contents{get(hObject,'Value')} returns selected item from FilterType

% --- Executes on selection change in Windows.

function Windows_Callback(hObject, eventdata, handles)

  AutoRun_value=get(handles.AutoRun,'Value');

  if(AutoRun_value==1)

     AutoChoose(handles)

  end

% hObject    handle to Windows (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns Windows contents as cell array

%        contents{get(hObject,'Value')} returns selected item from Windows

% --- Executes on selection change in DigitalFilter.

function DigitalFilter_Callback(hObject, eventdata, handles)

  DigitalFilter_value=get(handles.DigitalFilter,'Value');

                 if(DigitalFilter_value==1)                     

                     set(handles.FilterDesign,'enable','on');

                     set(handles.Windows,'enable','off');

                 else

                      set(handles.FilterDesign,'enable','off');

                     set(handles.Windows,'enable','on')                   

                 end

  AutoRun_value=get(handles.AutoRun,'Value');

  if(AutoRun_value==1)

     AutoChoose(handles)

  end

% hObject    handle to DigitalFilter (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns DigitalFilter contents as cell array

%        contents{get(hObject,'Value')} returns selected item from DigitalFilter

% --- Executes on button press in Run.

function Run_Callback(hObject, eventdata, handles)

AutoChoose(handles)

% hObject    handle to Run (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Run

% --- Executes on button press in Quit.

function Quit_Callback(hObject, eventdata, handles)

close

% hObject    handle to Quit (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of Quit

% --- Executes on button press in AutoRun.

function AutoRun_Callback(hObject, eventdata, handles)

  AutoRun_value=get(handles.AutoRun,'Value');

  if(AutoRun_value==1)

     AutoChoose(handles)

  end

% hObject    handle to AutoRun (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of AutoRun

% --- Executes on button press in MinOrder.

function MinOrder_Callback(hObject, eventdata, handles)

 MinOrder_value=get(handles.MinOrder,'Value');

                 if(MinOrder_value==1)                     

                     set(handles.Order,'visible','off');

                 else

                      set(handles.Order,'visible','on');          

                 end

% hObject    handle to MinOrder (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of MinOrder

% --- Executes on button press in CustomOrderButton.

function CustomOrderButton_Callback(hObject, eventdata, handles)

  CustomOrderButton_value=get(handles.CustomOrderButton,'Value');

                 if(CustomOrderButton_value==0)                      

                     set(handles.Order,'visible','off');

                 else

                      set(handles.Order,'visible','on');          

                 end

% hObject    handle to CustomOrderButton (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of CustomOrderButton

更多相关推荐:
数字信号处理课程设计报告(样本)

福州大学至诚学院Matlab实践报告专业电子科学与技术班级08级1班姓名黄来奋学号210891205指导老师周老师20xx年5月28日摘要随着计算机和信息科学的飞速发展信号处理逐渐发展成为一门独立的学科成为信息...

数字信号处理课程设计报告

课程设计报告课程名称课题名称专业通信工程班级学号姓名指导教师20xx年12月25日湖南工程学院课程设计任务书课程名称数字信号处理课题数字滤波器设计及滤波专业班级学生姓名学号指导老师审批任务书下达日期20xx年1...

数字信号处理综合设计报告

江南大学物联网工程学院课题数字信号处理综合设计报告设计题目信号处理系统综合设计专业通信工程班级通信0902姓名吴磊学号07020xx225指导教师陈文驰张建平20xx年6月29日一设计概述目的和要求数字信号处理...

数字信号处理课程设计报告

数字信号处理课程设计报告班级电信0803班学号成绩设计一正余弦信号的谱分析一设计目的1用DFT实现对正余弦信号的谱分析2观察DFT长度和窗函数长度对频谱的影响3对DFT进行谱分析中的误差现象获得感性认识二设计原...

数字信号处理课程设计报告

第一章绪论11设计的目的及意义本次课程设计的目的是利用MATLAB对语音信号进行数字信号处理和分析要求学生采集语音信号后在MATLAB软件平台进行频谱分析并对所采集的语音信号加入干扰噪声对加入噪声的信号进行频谱...

数字信号处理课程设计 报告

淮阴工学院数字信号处理课程设计报告课题名称基于MATLAB的语音信号分析和处理低通部分姓名xx学号1234567890班级电子0000专业电子信息工程归口系部电子与电气工程学院起迄日期20xx年12月22日20...

数字信号处理课程设计报告

数字信号处理课程设计报告班级学号姓名设计一DFT在信号频谱分析中的应用一设计目的1熟悉DFT的性质2加深理解信号频谱的概念及性质3了解高密度谱与高分辨率频谱的区别4对DFT进行谱分析中的误差现象获得感性认识二设...

数字信号处理课程设计报告

基本原理双线性变换法是将整个s平面映射到整个z平面其映射关系为21z1sT1z1或1sT2z1sT2双线性变换法克服了脉冲响应不变法从s平面到z平面的多值映射的缺点消除了频谱混叠现象但其在变换过程中产生了非线性...

湖南理工学院数字信号处理(DSP)课程设计指导书(20xx年用)

数字信号处理课程设计指导书信息与通信工程学院一数字信号处理课程设计目的通过课程设计主要达到以下目的1使学生进一步掌握数字信号处理课程的基本理论基本方法和基本技术2使学生增进对MATLAB的认识利用MATLAB加...

数字信号处理课程设计报告

数字信号处理课程设计报告姓名学院专业题目张亮学号1121302114计算机工程学院通信工程1122数字调音台20xx年11月目录1引言或绪论32课程设计题目描述和要求321题目描述322设计要求33课程设计报告...

数字信号处理课程设计报告(样本)

数字信号处理课程设计报告课题名称系别学号姓名班级指导教师20xx年10月25日目录摘录3正文4一设计内容4二设计原理4三设计过程71语音信号的录制72取点频谱分析83低通滤波器设计104滤滤前后信号对比12结论...

数字信号处理课程设计

课程设计课程设计名称数字信号处理课程设计专业班级学生姓名学号指导教师课程设计时间20xx616至20xx620说明本表由指导教师填写由教研室主任审核后下达给选题学生装订在设计论文首页一需求分析滤波器从广义上来说...

数字信号处理课程设计报告(22篇)