logo资料库

Matlab GUI 编程(经典案例,学习GUI必备).pdf

第1页 / 共215页
第2页 / 共215页
第3页 / 共215页
第4页 / 共215页
第5页 / 共215页
第6页 / 共215页
第7页 / 共215页
第8页 / 共215页
资料共215页,剩余部分请下载后查看
目 录 1、GUI 新手之——教你读懂 GUI 的 M 文件 ................................................................................... 5 2、GUI 程序中改变 current directory 引起的问题 ......................................................... 10 3、 GUI 中 h0bject 和 handles 的 区 别 ......................................................................... 11 4、handles 结构中句柄和对象的关联问题 .............................................................................. 12 5、Matlab 利用定时器连续显示图片的问题............................................................................. 14 5-1、GUI 中实现在图片任意位置上标注 text ........................................................................ 17 5-2、使用 edit 的另外一种 callback ................................................................................... 17 6、MATLAB 如何实现图像的任意裁减? ................................................................................... 17 7、 坐 标 轴 标 注 刻 度 、 网 格 、 文 字 方 向 ................................................................................ 18 8、 Matlab 中 对 uitable 的 操 作 : 调 节 各 列 宽 度 , 设 定 某 列 是 可 编 辑 的 ............ 19 9、将在 Matlab 下编写的 GUI 转成独立于 Matlab 平台的应用程序 .................................. 20 10、 要 将 用 Matlab 语 言 编 写 的 函 数 文 件 编 译 成 可 独 立 执 行 的 *.exe 文 件 .......... 23 11、 matlab GUI 程 序 转 换 成 exe 可 执 行 文 件 ............................................................... 26 12、gui 生成独立的应用程序的发布问题 ................................................................................. 28 13、GUI 控制 simulink 模块及参数的综合实例! ................................................................ 29 13-1、在 axes 显示图像后,在图像上单击鼠标时,回调函数的定义规则和使用方法 ..... 30 14、如何在循环中加入 waitbar,并在 waitbar 上添加‘取消’按钮 ................................ 31 15、 在 matlab 中 对 信 号 进 行 FFT 变 换 ............................................................................ 33 16、动态显示 figure 中曲线的 x-y 坐标值的一个函数 ........................................................ 35 17、在 GUI 界面的打开按钮中,如何对文件进行操作 ............................................................ 37 18、Matlab 不同控件之间的数据传递问题 .............................................................................. 40 19、在 edit box 里输入相关数据后,直接按回车键,不用鼠标点击 pushbutton 就可以 直接执行 .......................................................................................................................................... 41 19-1 GUI 使用 editbox 输入数据后如何自动清除数据 ....................................................... 41 20、在 GUI 中,计算结果怎么用 excel 来保存到指定的文件夹中 ....................................... 42 21、如何得到 popupmenu 选项中最后一个字符串的 VALUE 值 ............................................ 44 22、回调函数互相调用的问题 ..................................................................................................... 44 22-2string 和 number 相互转换的问题 ................................................................................. 45 23、这样的功能的 pushbutton 的 callback 怎么写呀,谢谢了....................................... 45 24、GUI 中 axes 使用 subplot 时的清空及 axes 大小的固定的解决方法 ........................ 46 25、退出 GUI 时如何把全局变量中的值清空? ........................................................................ 48 26、从串口接受数据时,如何把波形绘制到指定的坐标轴上? .............................................. 48 27、两个 GUI 之间如何传递数据 ................................................................................................ 50 28-1 几个有用的帖子................................................................................................................... 52 28-2、GUI 之间互相调用和关闭问题 ........................................................................................ 55 29、GUI timer 定时器 ............................................................................................................... 55 30、如何在循环中加入 waitbar ................................................................................................ 56 31、如何连续读入图片!! ......................................................................................................... 57 32、如何把此次输入的值保存为下一次初始化的值 .................................................................. 58 33、Matlab 关于解决自动保存 gcf 的问题 ............................................................................. 58 34-1、在 matlab 里面如何读取 excel 里面的数据或者写入数据 ....................................... 60
34-2、在 excel 中连续输入数据。 ........................................................................................... 61 35、Matlab GUI 不同控件之间的数据传递问题 ..................................................................... 63 36、怎么统计一个十进制数中"0"的个数??求助! .............................................................. 64 37、Matlab 对 listbox 里的条目能否一条条单独设置回调函数? ..................................... 65 38、键盘操作:matlab GUI 中如何取得从键盘输入的按键的键值 ..................................... 67 39、GUI 如何响应鼠标事件 ......................................................................................................... 68 40、matlab 截图、图像处理 ..................................................................................................... 71 41、 MATLAB GUI 中 利 用 定 时 器 制 作 动 画 - [MATLAB] ............................................ 79 42、 MATLAB 如 何 从 GUI 中 返 回 参 数 - [MATLAB] ..................................................... 81 43、 MATLAB 中 GUI 子 程 序 的 参 数 传 递 - [MATLAB] ................................................ 82 44、Matlab 保存 axes 上的图的问题(包括坐标轴) ........................................................... 83 45、 Matlab 鼠 标 控 制 的 两 个 GUI 例 子 ( 附 代 码 ) ....................................................... 86 46、分享初学的一个 GUI 例子--新手好好看看(图) ........................................................ 92 47、axes 清除畫面 ..................................................................................................................... 108 48、GUI 中调用自己制作的帮助文件 ....................................................................................... 109 49、关于从 gui 调用 simulink .............................................................................................. 109 50、如何将菜单中退出项和窗口关闭的回调函数合并? ........................................................ 112 51、matlab 日历程序 ............................................................................................................... 114 52、如何在 GUI 里得一个 axes 实现双 Y 坐标轴 .................................................................. 116 53、如何实现动态的 GUI 界面 .................................................................................................. 116 54、关于 GUI 和 simulink 参数传递和执行 ......................................................................... 117 55、代码运行时间的计时方法 ................................................................................................... 129 56、如何在 GUI 指定的 axes 中再画一个 axes .................................................................... 130 57、按下鼠标左键并拖动鼠标时的作图方法............................................................................ 131 58、图像处理相关资料 ............................................................................................................... 132 59、保存 axes 坐标轴上画的曲线或图形 ................................................................................ 135 60、在 GUI 中如何打开 IE ........................................................................................................ 136 61、gui 输入数据,通过 rs232 传给芯片 ............................................................................. 136 62、Matlab 关于 gui 和 excel 的问题 ................................................................................. 137 63、matlab 如何显示数学公式 ............................................................................................... 140 64、修改 matlab 自带的 tabdlg 的字体和颜色 ................................................................... 143 65、求助 Matlab 的 RGB 彩色图合成 ..................................................................................... 143 66、如何删除已绘制的曲线? ................................................................................................... 144 67、总结一下,MATLAB 中随机矩阵获得 ................................................................................ 145 68、【原创】GUI 设计中背景音乐的定制与关闭 ................................................................... 148 69、Matlab 如何改变 GRID 网格线的颜色? ........................................................................ 151 71、把 plot 图上的某些曲线排除在 lengend 之外,即不用 legend 标注出来 ............. 152 72、如何连续对矩阵追加数值 ................................................................................................... 153 73、两个等直径圆管的交线 ....................................................................................................... 155 74、Matlab 的 csvread 读取数据的问题 ............................................................................. 156 75、在对数坐标系插值的问题 ................................................................................................... 157 76、实现在原有图像上的部分图像变为白色............................................................................ 157 78、如何实现双击 listbox 中的条目才表示选中 ................................................................. 158 79、如何删除矩阵中的 NaN ....................................................................................................... 159
80、用平行截面法讨论由曲面 z=x^2-y^2 构成的马鞍面形状。 ........................................ 159 81、如何利用 ode45 解方程 ..................................................................................................... 160 82、Matlab 图片如何批处理?pic 变量逐一读取文件夹所有图片名 ................................ 160 83、方程为:exp(-x)=cos(x),用迭代法求出最小的正根,当相对误差<=10e-6 时,求 根结束。 ........................................................................................................................................ 161 84、通过鼠标点击控制循环 ....................................................................................................... 161 85、图像经连续小波分解后的显示效果图 ............................................................................... 162 85-1、怎样查看图像的属性....................................................................................................... 164 86、想产生如下的矩阵:6 行 10 列,每行都是 1 2 3 4 5 6 7 8 9 10。 ................. 164 87、textread 读取.txt 中数据 ............................................................................................. 164 88、数制之间的转换怎么实现 ................................................................................................... 165 89、matlab 读取大数据文件的方法 ........................................................................................ 167 90、从状态空间方程转换为传递函数 ....................................................................................... 169 91、生成 0 1 2 3 4 5 6 7 8 随机出现大小为 20X20 的矩阵! .................................. 169 92、存储绘图过程,并播放视频 ............................................................................................... 170 93、如何同时读入多个文件,并作图? ................................................................................... 170 94、MATLAB GUI 编程中几个有用的程序段........................................................................... 172 95、Matlab 如何在给定区域随机取点? ................................................................................ 175 96、数据如何导入到 workspace 中,并执行?在 GUI 里面,怎么传递处理。 ............... 175 97、matlab 下画‘心’的程序。 ............................................................................................... 176 98、点到直线的距离怎么求? ................................................................................................... 176 99、如何绘制正态分布图? ....................................................................................................... 180 100、matlab 作图时,如何只保存图像而不显示图像 .......................................................... 180 101、在三维图中只显示 x,y 轴,不显示 z 轴 ...................................................................... 181 102、cell array 和矩阵的显示 ............................................................................................ 181 103、矩阵形式的转换 ................................................................................................................. 183 104、如何判断鼠标是否在 figure 内的某一区域? ............................................................. 184 105、一个有用的程序 ................................................................................................................. 184 106、窗口的最大化、最小化、图标、置顶 ............................................................................. 186 107、连续生成文件名的问题 ..................................................................................................... 188 108、编辑框 edit 中输入公式后的绘图问题.......................................................................... 189 109、MATLAB 中 plot 命令绘图微调的几个注记 (转自职业仓库) ................................ 190 110、MATlab 三维图中显示 z 坐标轴的极大极小值 ............................................................ 198 111、如何一次性清空 GUI 程序的 handles 结构中的变量 ................................................. 198 112、Matlab 如何给元胞中的每个一维向量前增加同一个数? .......................................... 199 113、用 guide 生成的不同 GUI 之间控件的互相操作 .......................................................... 201 114、自定义 Matlab figure 工具栏按钮 ........................................................................... 203 115、matlab 有没有按某个小数位数做四舍五入的函数? ................................................. 204 116、有关矩阵中小于某值的数取整的问题 ............................................................................. 204 117、Matlab 表面被截后的部分 .............................................................................................. 205 118、如何是 imshow 显示的图像充满整个 figure? ......................................................... 206 119、图像颜色统计直方图 ......................................................................................................... 206 120、Matlab 如何将大元胞数组写入到 txt 文件 ................................................................. 207 121、构造特殊矩阵(右螺线状的) .......................................................................................... 208
122、figure 中多坐标轴中曲线的 legend 标注 ................................................................. 209 123、GUI 中鼠标选中并显示曲线的类型及坐标 ..................................................................... 210 124、Matlab 中 y=1\x 围绕 y 轴旋转形成的旋转曲面 ....................................................... 213 125、GUI 程序一开始以‘最大化’显示的问题 ........................................................................ 214 126、如何实现文本自动转换 ..................................................................................................... 214
1、GUI 新手之——教你读懂 GUI 的 M 文件 GUIDE 生成的 GUI 的 M 文件控制了你编制的 GUI 界面的所有属性和行为,或 者说外观和对用户操作的响应。比如说按下一个按钮或者选择了一个菜单项之类。 M 文件包括了运行你整个界面程序所需要的全部代码,包括所有 GUI 组件的 CALLBACKS 函数。其实这些 callbacks 函数算是 M 文件里的子程序,callback 里面就填写你所期望程序做的动作,比如画一个图或者算一个算式。 插入,关于什么是子程序 懂的人跳过^_^ function [avg, med] = newstats(u) % Primary function % NEWSTATS Find mean and median with internal functions. n = length(u); avg = mean(u, n); med = median(u, n); function a = mean(v, n) % Subfunction % Calculate average. a = sum(v)/n; function m = median(v, n) % Subfunction % Calculate median. w = sort(v); if rem(n, 2) == 1 m = w((n+1) / 2); else m = (w(n/2) + w(n/2+1)) / 2; end 以上就是一个大的程序 function nestats,它下面另外包含了两个小的 function mean 和 median,这样在大程序的里面就可以以如上的方式调用它 们了。子程序的好处在于如果你总是要重复用到一组计算方式的时候,那你就把 这组重复计算方式类似以上的方法编写成一个子程序,避免大量重复代码。在 M
文件里面,会看到最外层,也就是最上面那一一行 function varargout = setfire(varargin) (setfire 是我 m 文件存的名字)就是那个大程序框,它下面有很多小 function 比如什么什么 creatFcn 或者什么 callback 之类。看上去那个复杂,其实就跟 上面这个一样的道理。只不过是 M 文件的类似 avg = mean(u, n);med = median(u, n);这两句话系统隐藏(就当它是隐藏好了)起来了,它会在你点 击鼠标(或者响应操作)时候自动去调用执行一次 callback 函数。所以你只用 管把代码写入响应的函数名下就行了。至于系统为什么会自动调用,我们不用管, 我们只用知道,我点击鼠标,我拖动滑竿时,系统会执行哪里的代码。就够了。 一、M 文件的数据管理模式 Sharing Data with the Handles Structure :用 handles 这个东西共 享数据 在你运行你的 GUI 的时候,M 文件会自动生成一个叫做 handles 的东西(准 确的说它属于 handles 类型的结构体,且取的名字也叫做 handles),不用管 那么复杂,只用知道你可以从它这里找到 GUI 的所有数据,比如说控件的信息, 菜单信息,axes 信息。想象 handles 就是一个缸了,它里面装载了所有的信息, 而且这个缸在各个控件的 callback 之间传来传去,理所当然那每个控件的 callback 都可以放入一些想放入的数据,也可以从里面取出任何想要的数据包 括别的控件的信息(比如滑竿的当前值,edit text 的当前值)和别的控件放进 去的数据。 所以,用 handles 可以达到的目的有两个: a,各个控件的 callback 的信息交换 (current_data 是随便设置的变量名) handles.current_data = X; 在某控件下的 callback 写入这一句,就
表示你把这个数据放缸里了 guidata(hObject,handles);接着别忘了保存~! 然后在你需要的地方把它从缸里捞出来 X1 = handles.current_data; b,读取 GUI 控件的信息,自然也可以设置 GUI 控件的信息(比如说背景色随着 按钮点击而变换之类,或者你想让按钮 A 点一下,字符 B 跳一下,也行。) all_choices 是随便取的变量名,my_menu 是你那个菜单项的 TAG 名字 all_choices = get(handles.my_menu, 'String'); current_choice = all_choices{get(handles.my_menu, 'Value')}; 这样 current_choice 就得到了用户界面操作中,目录或者菜单的选择结果。 所以,要什么信息,直接用 handles.你的对象 就行了。 存什么信息也直接 handles.你的对象 就行了。 如果是自己的数据,就.变量名;如果是控件信息,就用 get set 二、M-File 里的各个函数代表什么意思 在设计面板设计排列好自己需要的各种按钮或者编辑框之后,下一步任务便是 添加自己的响应代码。 Opening function 添加在它名下的代码,在 GUI 开始运行但是还不可见 的时候执行。这里的代码一般都是做一些初始化工作的。 Output function 如果有需要,可以向命令行输出数据。(这个函数我没 用过,不多说了^_^) Callbacks 每一次点击按钮或者向输入框输入数据或者拖动滑竿,这些控 件名下的 callback 就会执行一次。
函数的输入参数 M-File 名下的全部 function 都会有这两个输入参数 hObject 它代表的是当前的这个控件(也就是你点哪一个按钮或者拖的哪 一个滑竿) handles 它代表的是现在这整一个 GUI 界面 对这两个变量进行修改后 guidata(hObject, handles); 进行保存,否则修改无效;P 三、Opnning Function 这个函数名下的代码 在界面可见之前执行。其实你也可以在这个函数名下用 handles.什么 tag 来获得组件的信息。因为在 Opnning 函数之前,所有的组 件就已经生成了,只不过 openning 函数是把这些组件‘打开’,让它们显示出来。 所以你可以在这个函数下面,添加代码,对界面做一些初始化工作。比如,计算 一些数据,显示一幅图或者别的什么工作。 function my_gui_OpeningFcn(hObject, eventdata, handles, varargin) 另外两个输入参数 eventdata 是 matlab 的保留参数,为以后开发准备的, 我们不用管它。varargin 它里面保存了,传进来的命令行。 varargin 怎么理解呢? ------------- my_gui('Position', [71.8 44.9 74.8 19.7]) %GUI 也是函数,它只不过是有个界面的函数。它的调用,同样是 函数名(输入 参数)。 这里就表示 GUI 在打开时,位置这个属性被设置成了右边那个值。也就是在 这个位置打开 GUI。Position 是你 GUI 界面的一个属性。(要想知道各个控件
分享到:
收藏