Matlab中访问属性值

目录

对象属性和圆点表示法

标量对象变量

非标量对象变量

将数据追加到属性值

图形对象变量是句柄

复制对象变量

删除对象变量

列出对象属性

使用 set 和 get 修改属性

多对象/属性操作

查询多个属性


对象属性和圆点表示法

        图形函数返回该函数创建的一个或多个对象。例如:

h = plot(1:10);

        h引用图形中绘制的值从 1 到 10 的线条。

        圆点表示法语法使用对象变量和区分大小写的属性名以圆点 (.) 相连,组成对象圆点名称表示法:

object.PropertyName

        如果对象变量是非标量,那么使用索引引用单个对象:

object(n).PropertyName

标量对象变量

        如果 h 是 plot 函数创建的线条,那么 h.Color 是特定线条的 Color 属性值:

h.Color
ans =

         0    0.4470    0.7410

        如果将颜色值分配给变量:

c = h.Color;

        变量c是双精度值。

whos
  Name      Size            Bytes  Class  

  c         1x3                24  double   
  h         1x1               112  matlab.graphics.chart.primitive.Line 

        可以使用赋值语句更改线条的 Color 属性值:

h.Color = [0 0 1];

        在表达式中使用圆点表示法属性引用:

meanY = mean(h.YData);

        或更改属性值:

h.LineWidth = h.LineWidth + 0.5;

        使用多个圆点引用来引用属性中包含的其他对象:

h.Annotation.LegendInformation.IconDisplayStyle
ans =

on

        设置属性中包含的对象属性:

ax = gca;
ax.Title.FontWeight = 'normal';

非标量对象变量

        图形函数可返回对象数组。例如:

y = rand(5);
h = plot(y);
size(h)
ans =

     5     1

        使用数组索引访问表示y中第一列的线条:

h(1).LineStyle = '--';

        使用set函数设置数组中所有线条的 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

图形对象变量是句柄

        图形函数返回的对象变量是句柄。句柄是对实际对象的引用。对象变量是在复制时以及删除对象时具有特殊行为的句柄。

复制对象变量

        例如,创建含有一个线条的图形:

h = plot(1:10);

        现在将对象变量复制到另一个变量,并使用新对象变量设置属性值:

h2 = h;
h2.Color = [1,0,0]

        将对象变量h分配给h2可创建句柄副本,而不是变量引用的对象。从变量 h 访问的 Color 属性值与从变量 h2 访问一样。

h.Color
ans =

     1     0     0

     h和h2引用同一个对象。复制句柄对象变量不会复制对象。

删除对象变量

        工作区中有两个对象变量引用同一个线条。

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

        现在,关闭包含线图的图窗:

close gcf

        线条对象不存在了,但引用此线条的对象变量仍然存在:

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

        但此对象变量不再有效:

h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.

        要移除无效对象变量,使用clear:

clear h h2

列出对象属性

        要查看一个对象包含哪些属性,使用get函数:

get(h)

        MATLAB 返回对象属性及其当前值列表:

    AlignVertexCenters: 'off'
            Annotation: [1x1 matlab.graphics.eventdata.Annotation]
          BeingDeleted: 'off'
            BusyAction: 'queue'
         ButtonDownFcn: ''
              Children: []
              Clipping: 'on'
                 Color: [0 0.4470 0.7410]
...
             LineStyle: '-'
             LineWidth: 0.5000
                Marker: 'none'
...

        可以使用set函数查看具有一组枚举值的属性值:

set(h,'LineStyle')
    '-'
    '--'
    ':'
    '-.'
    'none'

        要显示所有可设置的属性,包括具有一组枚举值的可能属性值,使用set和对象变量:

set(h)

使用 set 和 get 修改属性

        还可以使用set和get函数访问以及修改属性。

        设置现有对象属性值的基本语法是:

set(object,'PropertyName',NewPropertyValue)

        要查询特定对象属性的当前值,使用以下形式的语句:

returned_value = get(object,'PropertyName');

        属性名始终为字符向量。可以使用单引号或字符向量形式的变量。属性值取决于特定的属性。

多对象/属性操作

        如果对象参数是一个数组,那么 MATLAB 对所有识别出的对象设置特定的值。例如:

y = rand(5);
h = plot(y);

        将所有线条设置为红色:

set(h,'Color','red')

        要对多个对象设置相同属性,使用结构体或元胞数组指定属性名和属性值。例如,定义一个结构体,正确设置坐标区属性以显示特定图形:

view1.CameraViewAngleMode = 'manual';
view1.DataAspectRatio = [1 1 1];
view1.Projection = 'Perspective';

        要在当前坐标区设置这些值,输入:

set(gca,view1)

查询多个属性

        可以定义属性名元胞数组并用它获取那些属性值。例如,假设想要查询坐标区的 “camera mode” 属性值。首先,定义元胞数组:

camModes = {'CameraPositionMode','CameraTargetMode',...
'CameraUpVectorMode','CameraViewAngleMode'};

        使用此元胞数组作为参数获取这些属性的当前值:

get(gca,camModes)

ans = 
     'auto' 'auto' 'auto' 'auto'

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值