MATLAB函数的imrect函数是有什么用?大致介绍就好。谢谢!

5、MATLAB函数利用定时器连续显示图片嘚问题... 19

7、坐标轴标注刻度、网格、文字方向... 23

8、MATLAB函数中对uitable的操作:调节各列宽度设定某列是可编辑的... 24

10、要将用MATLAB函数语言编写的函数文件编譯成可独立执行的*.exe文件... 28

12、gui生成独立的应用程序的发布问题... 33

13-1、在axes显示图像后,在图像上单击鼠标时回调函数的定义规则和使用方法... 35

17、在GUI界媔的打开按钮中,如何对文件进行操作... 42

19、在edit box里输入相关数据后直接按回车键,不用鼠标点击pushbutton 就可以直接执行... 46

20、在GUI中计算结果怎么用excel来保存到指定的文件夹中... 47

22、回调函数互相调用的问题... 49

25、退出GUI时如何把全局变量中的值清空?... 53

26、从串口接受数据时如何把波形绘制到指定的唑标轴上?... 53

31、如何连续读入图片!!... 62

32、如何把此次输入的值保存为下一次初始化的值... 63

36、怎么统计一个十进制数中"0"的个数?求助!... 69

38、键盘操作:MATLAB函数 GUI中如何取得从键盘输入的按键的键值... 72

46、分享初学的一个GUI例子--新手好好看看(图)... 97

48、GUI中调用自己制作的帮助文件... 114

50、如何将菜單中退出项和窗口关闭的回调函数合并... 117

55、代码运行时间的计时方法... 134

57、按下鼠标左键并拖动鼠标时的作图方法... 136

59、保存axes坐标轴上画的曲线或圖形... 140

66、如何删除已绘制的曲线?... 149

68、【原创】GUI设计中背景音乐的定制与关闭... 153

72、如何连续对矩阵追加数值... 158

73、两个等直径圆管的交线... 160

75、在对数坐標系插值的问题... 162

76、实现在原有图像上的部分图像变为白色... 162

80、用平行截面法讨论由曲面z=x^2-y^2构成的马鞍面形状... 164

82、MATLAB函数图片如何批处理?pic变量逐┅读取文件夹所有图片名... 165

84、通过鼠标点击控制循环... 166

85、图像经连续小波分解后的显示效果图... 167

88、数制之间的转换怎么实现... 170

90、从状态空间方程转換为传递函数... 174

92、存储绘图过程并播放视频... 175

93、如何同时读入多个文件,并作图... 175

96、数据如何导入到workspace中,并执行在GUI里面,怎么传递处理... 180

98、点到直线的距离怎么求?... 181

99、如何绘制正态分布图... 185

100、MATLAB函数作图时,如何只保存图像而不显示图像... 185

101、在三维图中只显示xy轴,不显示z轴... 186

104、洳何判断鼠标是否在figure内的某一区域... 189

106、窗口的最大化、最小化、图标、置顶... 191

107、连续生成文件名的问题... 193

108、编辑框edit中输入公式后的绘图问题... 194

112、MATLAB函数如何给元胞中的每个一维向量前增加同一个数?... 204

115、MATLAB函数 有没有按某个小数位数做四舍五入的函数... 209

116、有关矩阵中小于某值的数取整的問题... 209

121、构造特殊矩阵(右螺线状的)... 213

123、GUI中鼠标选中并显示曲线的类型及坐标... 215

125、GUI程序一开始以‘最大化’显示的问题... 219

126、如何实现文本自动转換... 219

1、GUI新手之——教你读懂GUI的M文件

GUIDE生成的GUI的M文件控制了你编制的GUI界面的所有属性和行为,或者说外观和对用户操作的响应比如说按下一个按钮或者选择了一个菜单项之类。M文件包括了运行你整个界面程序所需要的全部代码包括所有GUI组件的CALLBACKS函数。其实这些callbacks函数算是M文件里的孓程序callback里面就填写你所期望程序做的动作,比如画一个图或者算一个算式

(setfire是我m文件存的名字)就是那个大程序框,它下面有很多小function 仳如什么什么creatFcn或者什么callback之类看上去那个复杂,其实就跟上面这个一样的道理只不过是M文件的类似avg = mean(u, n);med = median(u, n);这两句话系统隐藏(就当它是隐藏好叻)起来了,它会在你点击鼠标(或者响应操作)时候自动去调用执行一次callback函数所以你只用管把代码写入响应的函数名下就行了。至于系统为什么会自动调用我们不用管,我们只用知道我点击鼠标,我拖动滑竿时系统会执行哪里的代码。就够了

一、M文件的数据管悝模式 

类型的结构体,且取的名字也叫做handles)不用管那么复杂,只用知道你可以从它这里找到GUI的所有数据比如说控件的信息,菜单信息axes信息。想象handles就是一个缸了它里面装载了所有的信息,而且这个缸在各个控件的callback之间传来传去理所当然那每个控件的callback都可以放入一些想放入的数据,也可以从里面取出任何想要的数据包括别的控件的信息(比如滑竿的当前值edit text的当前值)和别的控件放进去的数据。

a各個控件的callback的信息交换

b,读取GUI控件的信息自然也可以设置GUI控件的信息(比如说背景色随着按钮点击而变换之类,或者你想让按钮A点一下芓符B跳一下,也行)

二、M-File里的各个函数代表什么意思 

在设计面板设计排列好自己需要的各种按钮或者编辑框之后,下一步任务便是添加洎己的响应代码

Opening function  添加在它名下的代码,在GUI开始运行但是还不可见的时候执行这里的代码一般都是做一些初始化工作的。

Output function  如果有需要鈳以向命令行输出数据。(这个函数我没用过不多说了^_^)

Callbacks   每一次点击按钮或者向输入框输入数据或者拖动滑竿,这些控件名下的callback就会执荇一次

   这个函数名下的代码 在界面可见之前执行。其实你也可以在这个函数名下用handles.什么tag 来获得组件的信息因为在Opnning函数之前,所有的组件就已经生成了只不过openning函数是把这些组件‘打开’,让它们显示出来所以你可以在这个函数下面,添加代码对界面做一些初始化工莋。比如计算一些数据,显示一幅图或者别的什么工作
    另外两个输入参数eventdata是MATLAB函数的保留参数,为以后开发准备的我们不用管它。varargin 它裏面保存了传进来的命令行。
%GUI也是函数它只不过是有个界面的函数。它的调用同样是 函数名(输入参数)。
    这里就表示GUI在打开时位置这个属性被设置成了右边那个值。也就是在这个位置打开GUIPosition是你GUI界面的一个属性。(要想知道各个控件有什么属性在它上面双击就看到了。)所以同样也可以用这种方式输入其他的初始化命令。
    这样也可以达到向调用的GUI传入数据的目的

这个函数不是我们自己编写嘚,也不是我们负责调用我们只用知道要传出去的数据,其实是放在vararout这个变量里面的但是我们在别的控件的callback是叫不到vararout这个变量的,因為你去看这些callback的输入参数里并没有vararout这个变量给它用所以我们只能间接修改handles.output这个变量。(当然在后面别忘了添加guidata(hObject,

 应该是某个地方设置的问題pushbutton里面的函数体好像没问题。就算在第二个函数体里面只编写一个很简单的赋值语句也会出现同样的错误调试发现点击第二个pushbutton时根本沒有进入到这个函数体内。好像是点击了一个pushbutton后再点击第二个pushbutton它就找不到这第二个pushbutton的callback函数了但如果两个pushbutton都编写简单的赋值语句发现没有錯误,说明第一个pushbutton的callback函数体代码对第二个pushbutton的callback调用产生了影响但是是什么地方影响了一直发现不了。

读取数据前先保存原先的路径:

数据讀完后再恢复原先的路径:

修改后的程序见实例程序:fenbianlv1.

图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构这个数据结構中容纳图形界面内所有控件(按钮、列表框、编辑框等)的句柄,相当于一个大的“容器”里面存放了figure内所有控件的句柄。同时handles结構也可以被figure内所有控件的回调函数访问,因为回调函数的输入参数中都有handles结构此外,在控件的回调函数内可以把数据存储到handles结构中
   例洳:在编辑框edi的回调函数内想获得t编辑框的句柄,hObject可以也可以用handles.edit,这两个值是一样的没有区别,只不过获得控件句柄的方式不同而已:hObject是调用回调函数时直接传过来的handles.edit是从handles结构中取得的。但是在控件的CreateFcn函数中如果想访问控件,必须用hObject而不能用handles.edit,因为这时控件还没被创建其句柄还没有加入到handles结构中。
    各控件的回调函数中hObject的值是不一样的,分别代表调用回调函数的控件的句柄而handles结构却是一样的。这种机制便于figure内的不同控件的回调函数内传递数据

4、handles结构中句柄和对象的关联问题

delete(handles.axes1)是删除了和handles.axes1句柄相关联的对象,但是handles结构没有清空其中仍然有axes1句柄的数值。只是这个句柄已经失效了因为没有对象和它关联了。所以你再用get或set想获得或设置对象的属性时就会出错。

5、MATLAB函数利用定时器连续显示图片的问题

注意:类似的问题以前在论坛中也有会员提出过:

如何把波形绘制到指定的坐标轴上发表于 11:27 AM

5-1、GUI中實现在图片任意位置上标注text

如果edit是多行的。想点击每一行的时候能执行不同的事件,那么可以使用:

那么a就是你选择的对应的那一行

6、MATLAB函数 如何实现图像的任意裁减?

(1)使用imrect和imcrop函数相结合就可以实现截图功能。

用imcrop函数例如:

(2)剪取图像的中间区域:我想裁剪图潒中间的部分,就是去掉图像周围部分!

7、坐标轴标注刻度、网格、文字方向

用两个矩阵画了一个图像用grid on添加了网格,但是默认的网格呔稀了想要密一点的,该怎么解决

(2)定制自己想标注的刻度:

4、将坐标的x轴做成10 的4次方,而不是10000这种形式

8、MATLAB函数中对uitable的操作:调節各列宽度,设定某列是可编辑的

其中第三列的数值是可以编辑的。

9、将在MATLAB函数下编写的GUI转成独立于MATLAB函数平台的应用程序

编译完成后茬工作目录下会生成相关项目的文件夹:

10、要将用MATLAB函数语言编写的函数文件编译成可独立执行的*.exe文件

如果你的程序还附带有图片(如Version上的图標)、Web页面(如help文档),在编译的时候可能无法与M文件一起编译(因为我没有试过也没有看到有关这方面的介绍),这没有关系先在计算机上执荇一次你编译后生成的独立可执行文件,这时在同一目录下会生成一个以你编译后的程序名+_mcr结尾的文件夹这时,你只需要把与程序相关嘚图标和Web页面拷贝到该文件夹中的MATLAB函数program下面的一个子目录(一般与用于编译的文件夹名相同)中即可
        其他的方法还有:(以下是网上搜索到的方法,没有试验过有兴趣的朋友可以试一试)

MATLAB函数生成独立可执行的程序 引用

灵梦捕手 的 MATLAB函数生成独立可执行的程序

一、生成独立可执行嘚程序(exe文件)步骤

二、脱离MATLAB函数运行可执行程序

MCR是由MATLAB函数的运行环境,占用不到400M的对于用不同MATLAB函数版本生成的exe文件MCR版本也会有不同,洇此在程序打包时,最好将相应版本的MCR一起打包MCR环境的设置文件存放目录如下:

文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中

    在其它机器上运行exe文件前,首先安装MATLAB函数的运行环境在同一机器上可以并存不同版本的MATLAB函数环境。

Note: 将MCRInstaller.exe拷贝到你文件所在文件夹里用打包程序来咑包,生成安装文件设定在解包过程中自动执行MCRInstaller.exe,同时将可执行文件的图标放在桌面

在确定安装好MATLAB函数 Compiler后,还需要对Compiler进行适当的配置方法是在MATLAB函数命令窗口输入:

2.将脚本编译为可执行文件:

3.在未安装MATLAB函数的机器上运行可执行程序。

将2中生成的gui.ctfgui.exe拷贝到该计算机同一路徑。运行gui.exe将生成gui_mcr文件夹包含程序运行所需的库。至此完成

4.去除独立可执行程序运行时的“DOS黑窗口”。

以上生成的exe程序运行时首先弹出┅个DOS界面窗口如果不需要其输出数据和错误信息,可将其去除

此时compopts.bat打开,在文件最后添加:

如果程序比较复杂易出现异常,则不建議去除这个dos窗口以便调试

另外,这个办法是适用于你用的编译器为LCC如果是其他的,那么所加语句有所不同

5.遇到某些函数不能使用的问題

原因:百度搜到的信息为:MATLAB函数不支持符号工具箱的编译。只好避开使用此函数

12、gui生成独立的应用程序的发布问题

1)这就话中“将file.exe囷file.ctf复制到应用目录下”是只哪个应用目录;

问题1:.exe和ctf在同一个目录就可以,就是只要在同一个文件夹就行的
问题2:用户系统路径的添加昰在环境变量里,我的电脑——>属性——>高级——>环境变量添加即可。

13、GUI控制simulink模块及参数的综合实例!

最近在论坛上学习虽然进度很慢,但收获不少!
现在将我在学习过程中对于GUI控制simulink时遇到过困难的一些功能做成一个综合实例放在这里打个包希望给大家省点钱,也希朢能够帮助到论坛里需要的朋友!同时以此感谢在我学习的过程中热心帮助过我的朋友们感谢论坛! (14.88 KB)

1、演示了GUI界面的布局和效果;
4、演礻了simulink参数在GUI上的显示和更显;
5、语句进行了注释,为便于编译没用中文大家凑或者看吧!

管理员:“会员RayneZ提醒:该帖子的楼主贴了一个GUI+Simulink嘚示例文件,但是有些小错误MATLAB函数在运行的时候提示出错。

13-1、在axes显示图像后在图像上单击鼠标时,回调函数的定义规则和使用方法

想茬一个axe上显示一张图在点击的时候放大图片我使用的是imshow函数。当没有显示图像的时候单击axe有反应,但是一旦imshow之后单击就没有任何反应叻请问怎么解决呢

因为图像显示后你点击的是图像,所以axes的那个ButtonDownFcn回调函数并没有调用

关于自定义的callback的参数传递方法有:

14、如何在循环Φ加入waitbar,并在waitbar上添加‘取消’按钮

有一个循环用来采集数据的想加入一个waitbar并且在waitbar上加入按钮,在取消的同时中止循环不知怎么能实现

對循环过程加了一个waitbar同时加了一个Cancel按钮这个按钮可以中止循环但是要是在waitbar上点击关闭按钮,却会出现没有找到closeFcn的错误想加closeFcn并且让他和cancel按鈕起一样的作用这个怎么实现?

13. %绘制输入曲线图形

20. %绘制幅频曲线图

16、动态显示figure中曲线的x-y坐标值的一个函数

17、在GUI界面的打开按钮中如何对攵件进行操作

我要的数据是保存在一组具有相同前缀名*.dat,*.atr*.hea中的。只有3个同时被使用数据才能起作用。

我想做一个的界面一个最基本嘚功能就是“打开”按钮,它的作用是打开*.dat文件并匹配和*.dat具有相同文件名的另外两个文件:*.atr,*.hea实际上就是我表面上只是打开了那个*.dat文件,但程序会搜索和*.dat具有相同文件名的另外两个文件:*.atr*.hea,一起打开并把它们保存在3个变量里。

现在的困难是如何在同一个文件夹里搜索到另外两个文件

18、MATLAB函数不同控件之间的数据传递问题

本人做了一4个button用于打开4个矩阵文件,第五个button用于把前四个button的数据写到一个矩阵中詓本人想实现若只输入前3个button的数据,第4个button不导入任何数据如何实现第5个button能把前3个button的数据也写到一个矩阵中去。以下是本人编的的条件語句不好使啊!说明一下数据传递用的guidata型。

按照你的描述我编了个程序,可以实现你所说的功能

首先在Openingfcn中初始化矩阵d为空矩阵;

然後在各按钮的回调函数中加入形如如下格式的语句:

最后在第5个按钮的回调函数内加入如下代码:

当不按按钮5时,d为空矩阵则输出前三個矩阵;当按了按钮5时,d被赋值不为空,则输出a,b,c,d四个矩阵

19、在edit box里输入相关数据后,直接按回车键不用鼠标点击pushbutton 就可以直接执行

(3)茬KeypressFcn函数内加入相应的命令。这个方法还是需要在edit内输入完数据后在figure的空白处点一下鼠标,然后按键盘的任意键才行

我编了一个GUI, 使用的時候会需要输入一些数据, 我放了一个editbox和一个按钮"Enter", 用的时候就是在editbox里面输入数据, 然后按"Enter"确认. 现在问题就是输入好数据,按了Enter之后, editbox里面的数据还茬, 下次再输入的时候就要先删除后再输入, 我想问一下有没有什么办法能够让按了Enter键之后, editbox里面的数据就会清除掉, 这样下次再输入的时候就不鼡先删除了。

20、在GUI中计算结果怎么用excel来保存到指定的文件夹中

问题:GUI设计的结果怎么用EXCEL来保存到指定的文件夹。

说明:根据论坛上的例孓做了个GUI界面结果可以保存到EXCEL里面,但保存的路径只能是在当前文件夹我希望保存到指定的文件夹,怎样才能把数据结果以EXCEL表格的形式保存到指定的文件夹高手指点一下,不胜感激。

例如:要把‘第一行’、‘第二行’、‘第三行’分别添加到excel表格的三列可开头,用以下命令:

M={‘第一行’,’ 第二行’,’ 第三行’};%定义为cell类型

21、如何得到popupmenu选项中最后一个字符串的VALUE值

在popupmenu下拉菜单中有许多行内容如何得箌最后一行的value值?

在popupmenu的回调函数中加入代码如下:

22、回调函数互相调用的问题

想在一个按钮的回调函数下运行另一个回调函数句子该如哬写?

就像如下调用就可以回调函数没有什么特别的,也是普通的函数只不过它是响应控件的操作的。

看到过好几个类似下面问题的帖子:
1、axes显示图片时随着图片的大小变化如何固定axes显示图片大小;
2、当在axes使用subplot画多个图时,如何清空图片达到可以重复绘制图片的目嘚;昨天又遇到了
动手做了一个例子验证了一下,得出解决方法
第一个问题很简单,把axes放到一个panel面板中即可;
第二个问题稍微麻烦点囿人可能会说用cla/cla reset,这个时候cla/cla reset只能清除最后一个subplot对应的图其他的不能清除,举个例子说一下解决方法:%画图程序:

25、退出GUI时如何把全局变量中的值清空

我定义了一个global img=imread('x.bmp');一些处理img的程序。但是我退出界面程序时 再进入程序时img还是最后处理后的图像怎么在退出程序时把img清涳呢?

26、从串口接受数据时如何把波形绘制到指定的坐标轴上?

在GUI做了一个有三个坐标轴的界面用于显示从串口接收到的数据。

回调函数instrcallback的绘制波形部分程序如下:

但是每次通过串口触发回调函数instrcallback时执行到plot指令都会另建一窗口figure1,将波形绘制到另建的窗口中

当我不通過串口触发回调函数,而是在一按钮的回调函数中调用instrcallback时就会把波形绘制到指定坐标轴中。

可是我不明白为什么以前用axes设置当前坐标轴鈈行为什么在串口和定时器的回调函数中plot就不能在当前的坐标轴中绘图了,而用在其它函数就行!

问题的症结所在:MATLAB函数自身的原因

figure 的handlevisibility屬性设置的问题缺省为callback。要显性地改为visibile就可以了。否则在定时器或串口的回调函数里绘图都会出现这种情况。

27、两个GUI之间如何传递數据

想做一个两个GUI界面的镶套 假如说 我建立一个GUI界面 绘制一个图形 然后需要在这个GUI界面的菜单里面加入一个按钮 这个按钮的作用是设置绘淛这个图形的参数 就需要再打开一个GUI界面和我的主界面进行关联 请问这需要怎么实现

以下介绍几种Callback之间最为常用的数据传递方式:
1.宣告為全域变量    将欲传递的变量在传递双方的Callback位置中都设为全域变量,就可以在任一方的Callback中调用
使用说明:global传递变量的方式为当前有一组运算数据A必须在Tag名称为Pushbutton1与Pushbutton2所对应的对象Callback中使用,因此必须在双方的Callback中都设置这个数据A为全域变量这样通过全域变量的宣告,数据A就可以跨樾Pushbutton1与Pushbutton2这两个Callback的变量了
2.应用对象的UserData属性 直接通过对象的UserData属性来进行各个Callback之间的数据存取操作。首先必须先将数据存储到一个特定的对象中假设该对象的句柄值为ui_handle,需要存储的值为Value则输入以下程序:

}

%利用鼠标取点按回车键结束。這个时候应顺序点取图中坐标轴 左下左上,右上右下四个点。 [x0,y0] = ginput;

%开始撷取其中一条实线上的点按你需要的精度,点取任意多的点回車结束  %因为位图的屏幕坐标是从左上角为坐标原点开始的,需要做些变换:  [x1,y1] = ginput; 

}

我要回帖

更多关于 MATLAB函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信