《信号与系统》课程教学资源(MATLAB教程)第七章 MATLAB的GUI 程序设计

第七章MATLAB的GUI程序设计 Chapter 7:Design of MATLAB of GUI program GUI(Graphical User Interfaces):由各种图形对象组成的用户界 面,在这种用户界面下,用户的命令和对程序的控制是通过“选择” 各种图形对象来实现的。 基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜 单。 一.控件对象及属性(Object and its attributes of controller) 1.GUI控件对象类型(The mode of controller object) 控件对象是事件响应的图形界面对象。当某一事件发生时, 应用程序会做出响应并执行某些预定的功能子程序(Callback) 控件对象及其功能:(表7一1) 2.控件对象的描述(Description of controller object) MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点 击这些控件时会产生相应的响应。一种为静态控件,是一种不产 生响应的控件,如文本框等。 每种控件都有一些可以设置的参数,用于表现控件的外形、功 能及效果,既属性。属性由两部分组成:属性名和属性值,它们 必须是成对出现的。 (I)按钮(Push Buttons):执行某种预定的功能或操作: (2)开关按钮Toggle Button):产生一个动作并指示一个三 进制状态(开或关),当鼠点击它时按钮将下陷,并执行 callback(回调函数)中指定的内容,再次点击,按钮复 原,并再次执行callback中的内容; (3)单选框Radio Button:单个的单选框用来在两种状态之 间切换,多个单选框组成一个单选框组时,用户只能在 一组状态中选择单一的状态,或称为单选项; (4)复选框(Check Boxes):单个的复选框用来在两种状态之 间切换,多个复选框组成一个复选框组时,可使用户在
第七章 MATLAB 的 GUI 程序设计 Chapter 7: Design of MATLAB of GUI program GUI(Graphical User Interfaces):由各种图形对象组成的用户界 面,在这种用户界面下,用户的命令和对程序的控制是通过“选择” 各种图形对象来实现的。 基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜 单。 一. 控件对象及属性(Object and its attributes of controller)) 1. GUI 控件对象类型(The mode of controller object) 控件对象是事件响应的图形界面对象。当某一事件发生时, 应用程序会做出响应并执行某些预定的功能子程序(Callback). 控件对象及其功能: (表 7—1) 2. 控件对象的描述(Description of controller object) MATLAB 中的控件大致可分为两种,一种为动作控件,鼠标点 击这些控件时会产生相应的响应。一种为静态控件,是一种不产 生响应的控件,如文本框等。 每种控件都有一些可以设置的参数,用于表现控件的外形、功 能及效果,既属性。属性由两部分组成:属性名和属性值,它们 必须是成对出现的。 (1)按钮(Push Buttons):执行某种预定的功能或操作; (2)开关按钮(Toggle Button):产生一个动作并指示一个二 进制状态(开或关),当鼠点击它时按钮将下陷,并执行 callback(回调函数)中指定的内容,再次点击,按钮复 原,并再次执行 callback 中的内容; (3)单选框(Radio Button):单个的单选框用来在两种状态之 间切换,多个单选框组成一个单选框组时,用户只能在 一组状态中选择单一的状态,或称为单选项; (4)复选框(Check Boxes):单个的复选框用来在两种状态之 间切换,多个复选框组成一个复选框组时,可使用户在

一组状态中作组合式的选择,或称为多选项: (5)文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等 操作: (6)静态文本框Static Texts):仅仅用于显示单行的说明文 字: (7)滚动条(Slider):可输入指定范围的数量值; (8)边框(Frames):在图形窗口圈出一块区域: (9)列表框List Boxes):在其中定义一系列可供选择的字符 串: (1O)弹出式菜单(Popup Menus):让用户从一列菜单项中 选择一项作为参数输入: (11)坐标轴(Axs):用于显示图形和图象 3.控件对象的属性(Attributes of controller object) 用户可以在创建控件对象时,设定其属性值,未指定时将使用 系统缺省值。 两大类控件对象属性:第一类是所有控件对象都具有的公共属 性,第二类是控件对象作为图形对象所具有的属性。 A,控件对象的公共属性 Children取值为空矩阵,因为控件对象没有自己的子对象 Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象 所在的图形窗口 Tag取值为字符串,定义了控件的标识值,在任何程序中都可以 通过这个标识值控制该控件对象 Type取值为uicontrol,表明图形对象的类型 UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据 和信息 Visible取值为no或off, B,控件对象的基本控制属性 BackgroundColor取值为颜色的预定义字符或RGB数值
一组状态中作组合式的选择,或称为多选项; (5)文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等 操作; (6)静态文本框(Static Texts):仅仅用于显示单行的说明文 字; (7)滚动条(Slider): 可输入指定范围的数量值; (8)边框(Frames):在图形窗口圈出一块区域; (9)列表框(List Boxes):在其中定义一系列可供选择的字符 串; (10)弹出式菜单(Popup Menus): 让用户从一列菜单项中 选择一项作为参数输入; (11)坐标轴(Axes): 用于显示图形和图象 3. 控件对象的属性(Attributes of controller object) 用户可以在创建控件对象时,设定其属性值,未指定时将使用 系统缺省值。 两大类控件对象属性:第一类是所有控件对象都具有的公共属 性,第二类是控件对象作为图形对象所具有的属性。 A, 控件对象的公共属性 Children 取值为空矩阵,因为控件对象没有自己的子对象 Parent 取值为某个图形窗口对象的句柄,该句柄表明了控件对象 所在的图形窗口 Tag 取值为字符串,定义了控件的标识值,在任何程序中都可以 通过这个标识值控制该控件对象 Type 取值为 uicontrol,表明图形对象的类型 UserDate 取值为空矩阵,用于保存与该控件对象相关的重要数据 和信息 Visible 取值为 no 或 off, B,控件对象的基本控制属性 BackgroundColor 取值为颜色的预定义字符或 RGB 数值

Callback取值为字符串,可以是某个M文件名或一小段MATLAB 语句,当用户激活某个控件对象时,应用程序就运 行该属性定义的子程序。 Enable取值为on(缺省值),inactive.和off Extend取值为四元素矢量0,0 width,height,]记录控件对象标题 字符的位置和尺寸 ForegroundColor取值为颜色的预定义字符或RGB数值 Max,Min取值都为数值 String取值为字符串矩阵或数组,定义控件对象标题或选项内容 Style取值可以是pushbutton,radiobutton,checkbox,edit,text slider,frame,popupmenu listbox Units取值可以是pixels,normalized,.inches,centimeters或points Value取值可以是矢量,也可以是数值,其含义及解释依赖于控 件对象的类型 C,控件对象的修饰控制属性 FontAngle取值为normal,italic,oblique, FontName取值为控件标题等字体的字库名 FontSize取值为数值, FontWeight取值为points,normalized,inches,centimeters或 pixels HorizontalAligment取值为left,right,.定义对齐方式 D,控件对象的辅助属性 ListboxTop取值为数量值 SliderStop取值为两元素矢量[minstep,maxstepl,用于slider控件 Selected取值为on或off SlectionHoghlight取值为on或off E,Callback管理属性 BusyAction取值为cancel或queue ButtDownFun取值为字符串,一般为某个M文件名或一小段 MATLAB程序 Creatfun取值为字符串,一般为某个M文件名或一小段
Callback 取值为字符串,可以是某个 M文件名或一小段 MATLAB 语句,当用户激活某个控件对象时,应用程序就运 行该属性定义的子程序。 Enable 取值为 on(缺省值),inactive 和 off Extend 取值为四元素矢量[0 ,0 width, height],记录控件对象标题 字符的位置和尺寸 ForegroundColor 取值为颜色的预定义字符或 RGB 数值 Max,Min 取值都为数值 String 取值为字符串矩阵或数组,定义控件对象标题或选项内容 Style 取值可以是 pushbutton, radiobutton, checkbox, edit, text, slider, frame, popupmenu 或 listbox Units取值可以是 pixels, normalized, inches, centimeters 或 points Value 取值可以是矢量,也可以是数值,其含义及解释依赖于控 件对象的类型 C,控件对象的修饰控制属性 FontAngle 取值为 normal,italic, oblique, FontName 取值为控件标题等字体的字库名 FontSize 取值为数值, FontWeight 取值为 points, normalized, inches, centimeters 或 pixels HorizontalAligment 取值为 left,right,定义对齐方式 D, 控件对象的辅助属性 ListboxTop 取值为数量值 SliderStop 取值为两元素矢量[minstep,maxstep],用于 slider 控件 Selected 取值为 on 或 off SlectionHoghlight 取值为 on 或 off E, Callback 管理属性 BusyAction 取值为 cancel 或 queue ButtDownFun 取值为字符串,一般为某个 M 文件名或一小段 MATLAB 程序 Creatfun 取值为字符串,一般为某个 M 文件名或一小段

MATLAB程序 DeletFun取值为字符串,一般为某个M文件名或一小段 MATLAB程序 Handle Visibility取值为on,callback或off Interruptible取值为on或off 二.GUI开发环境(GUI Development Environment,GUIDE) MATLAB提供了一套可视化的创建图形窗口的工具,使用用 户界面开发环境可方便的创建GUI应用程序,它可以根据用户设计 的GUI布局,自动生成M文件的框架,用户使用这一框架编制自 己的应用程序。 MATLAB提供了一套可视化的创建图形用户接口(GU)的工具, 包括: *布局编辑器Layout Edtor)-在图形窗口中加入及安排对象。布 局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编 辑器中访问,用guide命令可以启动,或在启动平台窗口中选择 GUIDE来启动布局编辑器。 *几何排列工具(Alignment Tool)-调整各对象相互之间的几何关系 和位置 *属性编辑器Property Inspector)-查询并设置属性值 *对象浏览器Object Browser)-用于获得当前MATLAB图形用户 界面程序中所有的全部对象信息,对象的类型,同时显示控件的名称 和标识,在控件上双击鼠标可以打开该控件的属性编辑器。 *菜单编辑器(Menu Editor)-建立窗口菜单条的菜单和任何构成布 局的弹出菜单 在MATLAB中,GUI的设计是以M文件的编程形式实现的, GUI的布局代码存储在M文件和MAT文件中,而在MATLAB6中 有了很大的改变,MATLAB6将GUI的布局代码存储在FIG文件中, 同时还产生一个M文件用于存储调用函数,在M文件中不再包含
MATLAB 程序 DeletFun 取值为字符串,一般为某个 M 文件名或一小段 MATLAB 程序 HandleVisibility 取值为 on, callback 或 off Interruptible 取值为 on 或 off 二.GUI 开发环境(GUI Development Environment, GUIDE) MATLAB 提供了一套可视化的创建图形窗口的工具,使用用 户界面开发环境可方便的创建 GUI 应用程序, 它可以根据用户设计 的 GUI 布局,自动生成 M 文件的框架,用户使用这一框架编制自 己的应用程序。 MATLAB 提供了一套可视化的创建图形用户接口(GUI)的工具, 包括: *布局编辑器(Layout Edtor)-在图形窗口中加入及安排对象。布 局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编 辑器中访问,用 guide 命令可以启动,或在启动平台窗口中选择 GUIDE 来启动布局编辑器。 *几何排列工具(Alignment Tool)-调整各对象相互之间的几何关系 和位置 *属性编辑器(Property Inspector)-查询并设置属性值 *对象浏览器 Object Browser)-用于获得当前 MATLAB 图形用户 界面程序中所有的全部对象信息,对象的类型,同时显示控件的名称 和标识,在控件上双击鼠标可以打开该控件的属性编辑器。 *菜单编辑器(Menu Editor)-建立窗口菜单条的菜单和任何构成布 局的弹出菜单 在 MATLAB 中, GUI 的设计是以 M 文件的编程形式实现的, GUI 的布局代码存储在 M 文件和 MAT 文件中,而在 MATLAB6 中 有了很大的改变,MATLAB6 将GUI的布局代码存储在 FIG 文件中, 同时还产生一个 M 文件用于存储调用函数,在 M 文件中不再包含

GUI的布局代码,在开发应用程序时代码量大大减少。 L.布局编辑器Layout editor):用于从控件选择板上选择控件对象并 放置到布局区去,布局区被激活后就成为图形窗口。在命令窗口 输入GUIDE命令或点击工具栏中的guide图标都可以打开空白的 布局编辑器,在命令窗口输入GUIDE filename可打开一个已存在 的名为filename图形用户界面。 (1)将控件对象放置到布局区 a.用鼠标选择并放置控件到布局区内 b.移动控件到适当的位置 c.改变控件的大小: d.选中多个对象的方法: (2)激活图形窗口 选Tools菜单中的Activate Figure项或点击工具条上的 ActivareFigure按钮,在激活图形窗口的同时将存储M文件和 G文件,如所建立的布局还没有进行存储,用户界面开发环 境将打开一个Save As对话框,按输入的文件的名字,存储 对同名的M文件和带有.fg扩展名的FIG文件。 (3)运行GUI程序 在命令窗口直接键入文件名或用openfig,.open或hgload命令 运行GUI程序。 (4)布局编辑器参数设置 选File菜单下的Preferences菜单项打开参数设置窗口,点击 树状目录中的GUDE,既可以设置布局编辑器的参数 (5)布局编辑器的弹出菜单 在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单 可以完成布局编辑器的大部分操作。 2.几何位置排列工具(Alignment tool 用于调节各控件对象之间的相对位置。 3. 用属性编辑器设置控件属性(Set attributes of controller with Property Inspector) 在属性编辑器中提供了所有可设置的属性列表并显示出当前的
GUI 的布局代码,在开发应用程序时代码量大大减少。 1. 布局编辑器(Layout editor):用于从控件选择板上选择控件对象并 放置到布局区去,布局区被激活后就成为图形窗口。 在命令窗口 输入 GUIDE 命令或点击工具栏中的 guide 图标都可以打开空白的 布局编辑器,在命令窗口输入 GUIDE filename 可打开一个已存在 的名为 filename 图形用户界面。 (1)将控件对象放置到布局区 a. 用鼠标选择并放置控件到布局区内; b. 移动控件到适当的位置; c. 改变控件的大小; d. 选中多个对象的方法; (2)激活图形窗口 选 Tools 菜单中的 Activate Figure 项或点击工具条上的 ActivareFigure 按钮, 在激活图形窗口的同时将存储 M 文件和 FIG 文件,如所建立的布局还没有进行存储,用户界面开发环 境将打开一个 Save As 对话框,按输入的文件的名字,存储一 对同名的 M 文件和带有.fig 扩展名的 FIG 文件。 (3)运行 GUI 程序 在命令窗口直接键入文件名或用openfig, open或hgload命令 运行 GUI 程序。 (4)布局编辑器参数设置 选 File 菜单下的 Preferences 菜单项打开参数设置窗口,点击 树状目录中的 GUIDE,既可以设置布局编辑器的参数。 (5)布局编辑器的弹出菜单 在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单 可以完成布局编辑器的大部分操作。 2. 几何位置排列工具(Alignment tool) 用于调节各控件对象之间的相对位置。 3. 用属性编辑器设置控件属性(Set attributes of controller with Property Inspector) 在属性编辑器中提供了所有可设置的属性列表并显示出当前的

属性。 (1)属性编辑器(Opening Property Inspector):三种方法:1.用 工具栏上的图标打开;2.从View菜单中选择Property Inspector 菜单项;3.在按鼠标右键弹出的Property Inspector菜单中选择 菜单项。 (I)使用属性编辑器Using Property Inspector) a.布置控件 b.定义文本框的属性 c.定义坐标系 d.定义按钮属性 e.定义复选框 4.菜单编辑器Menu Editor)包括菜单的设计和编辑,菜单编辑 器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置 菜单项的属性,包括名称Label)、标识(Tag以、选择是否显示分 隔线(Separator above this item)、是否在菜单前加上选中标记 (Item is checked)、调用函数(Callback)。 5. 对象浏览器(Object Browsers):用于浏览当前程序所使用的全 部对象信息,可以在对象浏览器中选种一个或多个控件来打开 该控件的属性编辑器。 三、GUI程序设计GUI Program design) 包括图形界面的设计和功能设计两个方面 例1:用于绘图和图形旋转的GU1 1、布置控件: 一个坐标系、一个文本框、一个复选框,一个按 钮 2、定义文本框的属性:String-简单设计示例,FontName-隶 书,FontSize-22 3、定义坐标系:Visible of庄 4、 定义按钮属性:String-一绘图,FontName,ForegroundColor,. ontSize,BackgroundColor,Callback-surf(peaks(30)) 定义复选框:String-一rotae3D,CalIback-一oae3d 例2:设计一个简单信号分析仪的程序,要求根据输入的两个频
属性。 (1)属性编辑器(Opening Property Inspector):三种方法:1. 用 工具栏上的图标打开;2. 从 View 菜单中选择 Property Inspector 菜单项;3. 在按鼠标右键弹出的 Property Inspector 菜单中选择 菜单项。 (1)使用属性编辑器(Using Property Inspector) a. 布置控件 b. 定义文本框的属性 c. 定义坐标系 d. 定义按钮属性 e. 定义复选框 4. 菜单编辑器(Menu Editor): 包括菜单的设计和编辑,菜单编辑 器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置 菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分 隔线(Separator above this item)、是否在菜单前加上选中标记 (Item is checked)、调用函数(Callback)。 5. 对象浏览器(Object Browsers):用于浏览当前程序所使用的全 部对象信息,可以在对象浏览器中选种一个或多个控件来打开 该控件的属性编辑器。 三、GUI 程序设计(GUI Program design) 包括图形界面的设计和功能设计两个方面 例 1: 用于绘图和图形旋转的 GUI: 1、 布置控件:一个坐标系、一个文本框、一个复选框,一个按 钮 2、 定义文本框的属性:String-简单设计示例,FontName-隶 书,FontSize-22 3、 定义坐标系: Visible—off, 4、 定义按钮属性: String—绘图,FontName, ForegroundColor, ontSize, BackgroundColor,Callback-surf(peaks(30)) 5、 定义复选框: String—rotate3D,Callback—rotate3d 例 2:设计一个简单信号分析仪的程序,要求根据输入的两个频

率和时间间隔,计算函数x=sin(2πf0+sin(2πf)的值,并对函 数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。 L.设计图形界面(GUIDesign) 设计步骤: (1)在布局编辑器中布置控件, (2)使用几何位置排列工具对控件的位置进行调整: (3)设计控件的属性; (4)设置其他绘图属性 2.设置控件的标识(Set the Tag of controller) 控件的标识(Tg)是对于各控件的识别,每个控件载创建时都 会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和 维护的方便,一般为控件设置一个新的标识。本例设置第一个坐标 轴的标识为:frequency_axes,用于显示频域图形;第二个坐标轴 的标识为:time_axes,用于显示时域图形。三个文本编辑框的标 识为f1 input,2 input,t input,分别用于输入两个频率和自变量 时间的间隔: 3.编写代码(Edit code) GUI图形界面的功能,还是要通过一定的设计思路和计算方法, 由特定的程序来实现。为了实现程序的功能,还需要在运行程 序前编写一些代码,完成程序中变量的赋值、输入输出、计算 及绘图等工作。 一般方法为,内容为: %()设置对象的初始值: %分别设置三个文本编辑框的初始值为: f1_input=20 f2_input=50 f3 input-0:0.001:0.5 %(2)编写代码: %1)从GUI获得拥护输入的数据,本例中输入的三个数据 %分别为频率1、频率2和时间间隔。 f1=str2double(get(handles.f1_input,'String));
率和时间间隔,计算函数 x=sin(2πf1t)+sin(2πf2t) 的值,并对函 数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。 1. 设计图形界面(GUI Design) 设计步骤: (1)在布局编辑器中布置控件, (2)使用几何位置排列工具对控件的位置进行调整; (3)设计控件的属性; (4)设置其他绘图属性。 2. 设置控件的标识(Set the Tag of controller) 控件的标识(Tag)是对于各控件的识别,每个控件载创建时都 会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和 维护的方便,一般为控件设置一个新的标识。本例设置第一个坐标 轴的标识为:frequency_axes, 用于显示频域图形; 第二个坐标轴 的标识为:time_axes, 用于显示时域图形。三个文本编辑框的标 识为 f1_input, f2_input, t_input,分别用于输入两个频率和自变量 时间的间隔. 3. 编写代码(Edit code) GUI 图形界面的功能,还是要通过一定的设计思路和计算方法, 由特定的程序来实现。为了实现程序的功能,还需要在运行程 序前编写一些代码,完成程序中变量的赋值、输入输出、计算 及绘图等工作。 一般方法为,内容为: %(1) 设置对象的初始值; %分别设置三个文本编辑框的初始值为: f1_input=20 f2_input=50 f3_input=0:0.001:0.5 %(2) 编写代码: %1) 从 GUI 获得拥护输入的数据,本例中输入的三个数据 %分别为频率 1、频率 2 和时间间隔。 f1=str2double(get(handles.f1_input,'String'));

f2=str2double(get(handles.f2_input,'String')); t=eval(get(handles.t input,'String')); %2)计算数据,计算函数值,按指定点进行快速傅立叶变 %换,并计算频域的幅值和频域分辨率。 x=sin(2*pi*fl*t)+sin(2*pi*2*t); y=fft(k,512); m-y.*conj(y)/512: f=1000*(0:256/512; %3)在第一个坐标轴中绘制频域曲线 axes(handles.frequency_axes) plot(f,m(1:257) set(handles.frequency_axes,'XminorTick','on') grid on %4)在第二个坐标轴中绘制时域曲线。 axcs(handles.time axes)%选择适当的坐标轴 plot(t,x) set(handles.time_axes,'XminorTick','on') grid on 运行程序(Running program) 例3:制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用 于选择曲面形式、色彩图、光照模式和反射模式,三个滚动条用于确定光源的 位置, 一个按钮用于退出演示
f2=str2double(get(handles.f2_input,'String')); t=eval(get(handles.t_input,'String')); %2) 计算数据,计算函数值,按指定点进行快速傅立叶变 %换,并计算频域的幅值和频域分辨率。 x=sin(2*pi*f1*t)+sin(2*pi*f2*t); y=fft(x,512); m=y.*conj(y)/512; f=1000*(0:256)/512; %3) 在第一个坐标轴中绘制频域曲线。 axes(handles.frequency_axes) plot(f,m(1:257)) set(handles.frequency_axes,'XminorTick','on') grid on %4) 在第二个坐标轴中绘制时域曲线。 axes(handles.time_axes) %选择适当的坐标轴 plot(t,x) set(handles.time_axes,'XminorTick','on') grid on 运行程序(Running program) 例 3 :制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用 于选择曲面形式、色彩图、光照模式和反射模式,三个滚动条用于确定光源的 位置,一个按钮用于退出演示

月G1:光照效果滴示 回☒ 光照效果演示 选程光积核式 phong 反射模式 ■2 2 1 地出 制作要点: (1)建立一个静态文本,用于显示界面的标题:光照效果演示; (2)建立坐标轴对象,用于显示图形: (3)建立四个下拉 分别用于选择绘图表面的形状、色图、光照模式 和反射模式,每个下拉菜单的上方都有二个静态文本用于说明菜单的作用:】 (4)在一个frame上建立三个滑条用于确定光源的位置,并在frame上方 加一说明; (5)建立一个按钮用于退出演示: cal1back函数的内容为: function varargout=pushbuttonI Callback(h,eventdata,handles,varargin) delete(handles.figurel) function varargout popupmenu1_Callback(h, eventdata,handles, varargin) val=get(h,'value); switch val case 1 sphere(30); case 3 membrane
制作要点: (1)建立一个静态文本,用于显示界面的标题:光照效果演示; (2)建立坐标轴对象,用于显示图形; (3)建立四个下拉菜单,分别用于选择绘图表面的形状、色图、光照模式 和反射模式,每个下拉菜单的上方都有一个静态文本用于说明菜单的作用; (4)在一个 frame 上建立三个滑条用于确定光源的位置,并在 frame 上方 加一说明; (5)建立一个按钮用于退出演示; callback 函数的内容为: function varargout = pushbutton1_Callback(h, eventdata, handles, varargin) delete(handles.figure1) % - function varargout = popupmenu1_Callback(h, eventdata, handles, varargin) val=get(h,'value'); switch val case 1 surf(peaks); case 2 sphere(30); case 3 membrane

case 4 x.yl-meshgrid(-4:1:4): r=sqrt(x.^2+y.^2)+eps; z=sinc(r): surf(x,y,z) case 5 [x.yl-meshgrid((-1.5:3:1.5l.l-1:0.2:1J): =sgrt4-x.2/9-y.2/4)月 surf(x.V.z): case 6 t0:pi/12:3*pi r-abs cxp(←t4.*sim( y.(r.30) surf(x.v.z): end shading interp light('Position',-3-21D); axis off 70 function varargout radiobuttonl_Callback(h,eventdata,handles, varargin) set(h.'value',1) set(handles.radiobutton3.'value0) set(handles.radiobutton4.'value.0) lighting flat 0 function varargout radiobutton2_Callback(h, eventdata,handles, varargin) set(h,'value',1) set(handles.radiobutton1,'value,0) set(handles.radiobutton3,'value',0) set(handles.radiobutton4,'value',0) function varargout radiobutton3_Callback(h,eventdata,handles, varargin) set(h,'value',1) set(handles.radiobutton1,'value) set(handles.radiobutton2,'value0 set(handles.radiobutton4.'value'.0) lighting phong 0 function varargout radiobutton4_Callback(h,eventdata,handles
case 4 [x,y]=meshgrid(-4:.1:4); r=sqrt(x.^2+y.^2)+eps; z=sinc(r); surf(x,y,z) case 5 [x,y]=meshgrid([-1.5:.3:1.5],[-1:0.2:1]); z=sqrt(4-x.^2/9-y.^2/4); surf(x,y,z); case 6 t=0:pi/12:3*pi; r=abs(exp(-t/4).*sin(t)); [x,y,z]=cylinder(r,30); surf(x,y,z); end shading interp light('Position',[-3 -2 1]); axis off % - function varargout = radiobutton1_Callback(h, eventdata, handles, varargin) set(h,'value',1) set(handles.radiobutton2,'value',0) set(handles.radiobutton3,'value',0) set(handles.radiobutton4,'value',0) lighting flat % - function varargout = radiobutton2_Callback(h, eventdata, handles, varargin) set(h,'value',1) set(handles.radiobutton1,'value',0) set(handles.radiobutton3,'value',0) set(handles.radiobutton4,'value',0) lighting gouraud % - function varargout = radiobutton3_Callback(h, eventdata, handles, varargin) set(h,'value',1) set(handles.radiobutton1,'value',0) set(handles.radiobutton2,'value',0) set(handles.radiobutton4,'value',0) lighting phong % - function varargout = radiobutton4_Callback(h, eventdata, handles
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《信号与系统》课程教学资源(MATLAB教程)第一章 MATLAB 入门.doc
- 《信号与系统》课程教学资源(书籍文献)信号处理与线性系统(英)B.P.Lathi, Signal Processing and Linear Systems.pdf
- 《信号与系统》课程教学资源(书籍文献)信号与系统 Signals & Systems(第二版,奥本海姆).pdf
- 《信号与系统》课程教学资源(书籍文献)信号与系统常见题解析及模拟题(西北工业大学出版社:范世贵).pdf
- 石河子大学:《信号与系统》课程授课教案(任课教师:查志华).doc
- 榆林学院:《数字电子技术基础》课程授课教案(讲义,任课教师:高燕).pdf
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第四章 无限长单位脉冲响应(IIR)滤波器设计 4.4 从模拟滤波器低通原型到各种数字滤波器的频率变换(原型变换)4.5 从低通数字滤波器到各种数字滤波器的频率变换(Z平面变换法).ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第四章 无限长单位脉冲响应(IIR)滤波器设计 4.3 根据模拟滤波器设计IIR滤波器.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第四章 无限长单位脉冲响应(IIR)滤波器设计 4.2模拟低通滤波器设计.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第四章 无限长单位脉冲响应(IIR)滤波器设计 4.1 滤波器的基本原理.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第六章 数字信号处理系统的实现 6.1 数字滤波器的结构 6.2 量化与量化误差 6.3 有限字长运算对数字滤波器的影响 6.4 极限环振荡 6.5 系数量化对系数滤波器的影响.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第六章 数字信号处理系统的实现 6.6 数字信号处理硬件(数字信号处理器).ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第五章 有限长单位脉冲响应(FIR)滤波器的设计方法.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第二章 信号的采样与重建.pptx
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第三章 离散傅里叶变换及其快速算法 3.3 快速傅立叶变换 3.4 关于FFT应用中的几个问题.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第三章 离散傅里叶变换及其快速算法 3.1 离散傅立叶变换 3.2 利用DFT进行连续信号的频谱分析.ppt
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)部分分式.pptx
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)第一章 离散时间信号与系统.pptx
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)用留数定理求逆Z变换.pptx
- 新疆大学:《数字信号处理》课程教学课件(PPT讲稿)幂级数展开法(长除法).pptx
- 《信号与系统》课程教学资源(MATLAB教程)第三章 MATLAB的数值计算功能.doc
- 《信号与系统》课程教学资源(MATLAB教程)第二章 MATLAB程序设计基础.doc
- 《信号与系统》课程教学资源(MATLAB教程)第五章 图形处理功能.doc
- 《信号与系统》课程教学资源(MATLAB教程)第六章 Simulink 基础.doc
- 《信号与系统》课程教学资源(MATLAB教程)第四章 符号数学基础.doc
- 《信号与系统》课程教学资源(实验指导)实验一 连续时间信号的MATLAB表示.pdf
- 《信号与系统》课程教学资源(实验指导)实验三 连续时间信号的卷积.pdf
- 《信号与系统》课程教学资源(实验指导)实验二 连续时间信号的运算.pdf
- 《信号与系统》课程教学资源(实验指导)实验五 周期信号的合成与分解.pdf
- 《信号与系统》课程教学资源(实验指导)实验六 傅里叶变换.pdf
- 《信号与系统》课程教学资源(实验指导)实验四 连续时间LTI系统的时域分析.pdf
- 《信号与系统》课程教学资源(实验指导)实验七 抽样定理.pdf
- 《信号与系统》课程教学资源(实验指导)实验九 离散时间信号的MATLAB表示.pdf
- 《信号与系统》课程教学资源(实验指导)实验八 连续时间LTI系统的复频域分析.pdf
- 《信号与系统》课程教学资源(实验指导)实验十 离散时间信号的运算.pdf
- 《信号与系统》课程教学资源(实验指导)实验十一 离散时间系统的响应.pdf
- 《信号与系统》课程教学资源(实验指导)附录二 MATLAB主要命令函数表.pdf
- 《信号与系统》课程教学资源(实验指导)实验十三 综合设计-无失真传输系统.pdf
- 《信号与系统》课程教学资源(实验指导)实验十二 综合设计—音频信号的采样与重构.pdf
- 《信号与系统》课程教学资源(实验指导)附录一 MATLAB基础知识.pdf