对象的属性表示方法,修改方法以及多对象操作
上两篇讲到uicontrol的属性及简单的回调,我发现传输数据的方式或者说属性的修改,设置,传递方法太单一,于是就想还有哪些传递的方法,在多对象间如何传递。
对象属性和原点表示法
这个方法就是上两篇用的dot。这里详细看一下它在不同情况下的表示。
标量对象变量
object.PropertyName;该语法使用对象变量和区分大小写的属性名以圆点 (.) 相连,组成对象圆点名称表示法。
例如:
h = plot(1:10);%创建对象
h.Color%查询对象属性值
h.Color = [0 0 1];%设置对象属性值
meanY = mean(h.YData);%属性引用,作用是将Y轴数据求平均
h.LineWidth = h.LineWidth + 0.5;%这种更改也是可以的
h.Annotation.LegendInformation.IconDisplayStyle%使用多圆点表示包含的其他对象,也可以更改哦
非标量对象变量
图像函数返回对象数组
例如:
y = rand(5);
h = plot(y);
size(h)
h(1).LineStyle = '--';%数组圆括号指定单个对象和脚本没啥区别
set(h,'LineStyle','--')
将数据追加到属性值
通过圆点表示法,您可以使用 “end” 索引将数据追加到包含数据数组的属性,如线条 XData 和 YData。例如,这段代码同时更新 XData 和 YData,以延长线条。您必须确保线条的 x 和 y 数据的大小相同,然后才能通过调用 drawnow 进行渲染或返回 MATLAB提示符。
h = plot(1:10);
for k = 1:5
h.XData(end + 1) = h.XData(end) + k;
h.YData(end + 1) = h.YData(end) + k;
drawnow
end
图形对象变量是句柄
图形函数返回的对象变量是句柄。句柄是对实际对象的引用。对象变量是在复制时以及删除对象时具有特殊行为的句柄。
复制对象变量不等同于复制对象,句柄只代表指向该对象。
删除对象变量 使用clear函数
列出对象属性 ,使用get函数,如:get(h)
;MATLAB 返回对象属性及其当前值列表;也可以使用set,如:set(h,'LineStyle')
,查看具有一组枚举值的属性值。要显示所有可设置的属性用set(h)
。
使用set和get修改属性
设置现有对象属性值的基本语法是:
set(object,‘PropertyName’,NewPropertyValue);
要查询特定对象属性的当前值,使用以下形式的语句:
returned_value = get(object,‘PropertyName’);
属性名始终为字符向量。您可以使用单引号或字符向量形式的变量。属性值取决于特定的属性。
多对象/属性操作
如果对象参数是一个数组,那么 MATLAB 对所有识别出的对象设置特定的值。例如:
y = rand(5);
h = plot(y);
要对多个对象设置相同属性,使用结构体或元胞数组指定属性名和属性值。例如,定义一个结构体,正确设置坐标区属性以显示特定图形:
view1.CameraViewAngleMode = ‘manual’;
view1.DataAspectRatio = [1 1 1];
view1.Projection = ‘Perspective’;
要在当前坐标区设置这些值,输入:set(gca,view1)
您可以定义属性名元胞数组并用它获取那些属性值。例如,假设您想要查询坐标区的 “camera mode” 属性值。首先,定义元胞数组:
camModes = {‘CameraPositionMode’,‘CameraTargetMode’,…
‘CameraUpVectorMode’,‘CameraViewAngleMode’};
使用此元胞数组作为参数获取这些属性的当前值:
get(gca,camModes);
以上就是控件,对象间的信息传递了,但除了‘.’的方法外,还有其它方法,如利用tag(标记)来查找属性。这些在看到figure组件再说吧。目前感觉只不过是达到目的的不同手段吧,慢慢来不着急。