matlabGUI学习笔记9

今天看坐标轴,菜单和表格。

首先坐标轴

axes
最基础的,如何创建一个坐标轴,它的默认格式是什么样的?

语法

axes %在当前图窗中创建默认的笛卡尔坐标区,并将其设置为当前坐标区。通常情况下,您不需要在绘图之前创建坐标区,因为如果不存在坐标区,图形函数会在绘图时自动创建坐标区。

axes(Name,Value) %使用一个或多个名称-值对组参数修改坐标区的外观,或控制数据的显示方式。例如,‘FontSize’,14 可设置坐标区文本的字体大小。和figure,uicontrol大同小异。

axes(parent,Name,Value) %在由 parent 指定的图窗、面板或选项卡中创建坐标区,而不是在当前图窗中创建。

ax = axes(___) %返回创建的 Axes 对象。可在创建 Axes 对象后使用 ax 查询和修改对象属性。

axes(cax) %将 cax 指定的坐标区或图设置为当前坐标区,并使父图窗成为焦点。

cax - 要设置为当前坐标区的坐标区
Axes 对象 | PolarAxes 对象 | 图形对象

一般在GUI中还是使用ax = axes(__)的方法比较好。原因就是和其他控件,figure对象一样采用同一个形式创建,参数传递什么的都很方便。下面应用matlab文档中的例子。

figure
ax1 = axes('Position',[0.1 0.1 0.7 0.7]);
ax2 = axes('Position',[0.65 0.65 0.28 0.28]);

在图窗中创建了两个坐标轴并设定位置和大小;

contour(ax1,peaks(20))
surf(ax2,peaks(20))

在每个 Axes 对象上添加一个绘图。通过将坐标区作为第一个输入参数传递给图形函数来指定坐标区。

以上就是在图窗上设置坐标区了。

下一个例子是在选项卡上设置坐标区。

figure
tab1 = uitab('Title','Tab1');
ax1 = axes(tab1);
plot(ax1,1:10)

tab2 = uitab('Title','Tab2');
ax2 = axes(tab2);
surf(ax2,peaks)

这里的tab1,tab2是’Parent’属性,它可以是figure,Tab,pannal对象。

大体上axes就这么多。重点不是语法,而是其属性是否多样化,语法感觉都差不多,只要知道其属性及其属性值就可以精确的通过代码将图形映射到脑海里了。

axes属性

属性图
axes属性

就是设置axes的外观

它的值就是Value,通过语句改变显示,axes属性没有Value,不像uicontrol,值得注意一下。

看到这里体验和之前看uicontrol的感受真的不同了,之前觉得要全部看完才可以理解,但现在觉得这些属性真的没有必要去背,用到了翻一下,看看我要的效果是什么属性决定的,再在语法的函数中去添加或者修改就好,甚至我不会去强行记住属性值的范围,看来我对GUI的理解的确日渐增长,咳咳,臭不要脸一下。。不过父级与子级的概念,虽然说之前我写到以后用到了再看,可是现在已经明白的七七八八了。现在就剩下回调执行控件没有接触和仔细思考过了,还有事件机制,当然这是面对对象里面的,到时候再说吧,现在还是不要操之过急的好。不过虽然我不会去背有哪些属性值,它们都干什么,但我会在意它能让我做到什么,我可以通过这些属性做到什么事,也就是说会去思考它的应用而不是它自身,然后记住它是干什么的,能做什么,然后用的时候回来找的想法。
说到这里我想简单谈一下matlab学习笔记给我带来最大的收获是什么吧,是笔记本身吗?不是;是学会了使用matlab基本操作,几个简单的函数吗?也不是;我收获最大的是从小到大我从未或者说很少思考过的学习方法的问题,如何自学的问题,真的,学习matlabGUI之前我也是各种网上搜攻略,找书籍看,不是说不好,但真的好像效果不大,怎样学习,多么简单却又不简单的问题,怎样学好习。我萌生了看matlab文档学习GUI的想法是我记得这么一句话。你要想学好matlab,多看帮助文档,多使用help,学习嵌入式时听的最多的话是什么,多使用man命令。。。我只能说我以前真的好蠢啊,人都说了多看文档,你就是不看,想着找到所谓的捷径,什么是捷径,雾里看花,水中捞月而已。但为啥看文档我的进步就这么快呢?其实书上吧,我看了,真的写的很好,结构清晰,先基础,再讲句柄,再讲怎么使用uicontrol等函数,再讲几个小例子,但为啥我就不愿意看呢?为啥学习效率会那么低呢?我认为最大的原因就是书上内容很详细,确是站在一个已经学会,学的很好的人的角度来施教,这个很重要,很基础所以我放前面,所以我一口气全部写清楚,写明白,因为后面一定会用上,但结果是我看到那里,我很糊涂,我很懵逼,这有啥用的疑问真的极大的阻碍了我的学习兴趣。而自己看文档是什么,为什么会看文档?是在一篇应用中看到了,但不懂,所以我要去看,去理解它是干什么的,然后一个应用我都看懂了,啊,我明白了这样可以做成这样一件事,那我想做一个那样的事我该如何,带着求知欲的学习事半功倍。这就是我的最大收获吧,听别人说重要真的不如自己遇见来的理解要深呢。就像爬树一样吧,我感觉。直接看书是给你看树长什么样,从根系开始讲,然后树干,然后树枝等,我比较适合的是先爬了再说,爬到其中一个树枝上自己再思考下树的形状,然后再爬其他树枝,爬了几根树枝后我就会举一反三了,要怎么爬的问题对我来说不成问题,现在我需要的是在整体上对树的结构有一个很好的把握,而不能再按照自己的想像,于是去看书,了解细枝末节的东西。也就是一个从局部到整体再到局部的问题,这才是最适合我的学习方式吧。之前我还困扰过其他问题,比如说我学matlabGUI有啥用啊,有哪个公司用它,难道就只是自己用来做做图形界面来玩吗?工作用不上,就没用?这里依旧可以用局部整体局部思维去理解它究竟有没有用了。说到底,matlabGUI就是一堆工具可以让你做出一个拼图,也就是爬GUI编程这棵大树,然后还有其他树枝,像是C++,.Net,QT,真的实现方式会有很大差别吗?难道它们就不是控件,图标,表格,菜单等等组成的?只要理解了如何传递参数,积木是uicontrol还是什么其他的函数真的重要吗?再说面对对象编程,c++,java都是面向对象的,matlab也可以,但真的c++,java的面对对象就格外高级了?我看不一定,重要的难道不是如何将现实世界的事物抽象成类更重要吗?语言终究是工具,其核心的面对对象的思想才是永恒不变的。真的那么多新技术,光名字就让我头晕眼花了,但真的有那么重要吗?说白了计算机不就是输入输出吗?因为输入的改变,我要找到更好的得到输出的方法,这么自我洗脑一下,感觉就没那么怕了,哈哈,否则那么多技术,光名字就看到猴年马月哦。。。说到底各种技术的产生不都是因为输入的改变嘛(这里的理解比较片面)。慢慢来吧。

接下来我会以一种问问题的方式学习菜单,表格就不写了。

uimenu

第一个问题,uimenu在GUI中的形象是什么?它的样子?
找例子中它的样子:

菜单
第二个问题,如何创建菜单?

m = uimenu 在当前图窗中创建菜单,并返回 Menu 对象。如果没有可用的图窗,MATLAB将调用 figure 函数创建一个图窗。
m = uimenu(Name,Value) 使用一个或多个名称-值对组参数指定菜单属性值。
m = uimenu(parent) 在指定的父容器中创建菜单。父容器可以是使用 figure 或 uifigure 函数创建的图窗,也可以是另一个 Menu 对象。
m = uimenu(parent,Name,Value) 指定父容器和一个或多个属性值。

第三个问题,当我选中菜单后,我怎么设定图标界面就改变样子呢?怎么传递信息的?换言之,菜单的信息如何在figure中体现。

其输入是’Parent’参数,和其他属性,但稍微提到了回调,所以猜测是通过回调来改变窗口的显示,所以直接去属性中查看回调。
看了之后发现“MenuSelectedFcn - 选定菜单时触发的回调”这一属性,也就是说我选中这个菜单后它就会触发这个函数,我只要将这个菜单下包含的控件显示使能改为’on’,其他全部关闭就好了。(这些只是猜想,同步思考一下)

那其他的也就没啥问题了,都差不多,结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值