文档

获取和设置属性

自动计算属性

某些属性依赖于其他属性的值。MATLAB®自动计算这些属性的值,并根据当前图形模型更新它们的值。例如,轴限制会影响用于轴刻度的值,而轴刻度又会影响轴刻度标签。

当查询计算属性时,MATLAB执行隐式操作drawnow在返回属性值之前确保所有属性值是最新的。该查询导致所有相关属性的完整更新和屏幕的更新。

MATLAB根据某些特性所依赖的其他值来计算该特性的值。例如,绘图功能自动创建具有轴限制、标记标签和与绘制数据和图形大小相适应的大小的轴。

MATLAB图形在从计算属性返回值之前(如果有必要)执行一次完整的更新,以确保返回的值是最新的。

对象 自动计算属性

CameraPosition,CameraTarget,CameraUpVector,CameraViewAngle

位置,OuterPosition,TightInset

XLim,YLim,ZLim

XTick,YTick,ZTick,XMinorTick,YMinorTick,ZMinorTick

XTickLabel,YTickLabel,ZTickLabel,TickDir

SortMethod

文本

程度上

集合和获取的低效循环

当您设置属性值时,您将更改图形模型的状态,并将其标记为需要更新。当您查询自动计算属性时,如果图形模型和图形硬件不同步,MATLAB需要执行更新。

当您在同一个循环中获取和设置属性时,您可以创建这样一种情况,即在每次循环中执行更新。

  • 得到导致一个更新。

  • 将图形模型标记为需要更新。

每经过一次循环,循环就会重复一次。最好在一个循环中执行所有属性查询,然后在另一个循环中执行所有属性集,如下面的示例所示。

此示例获取并设置文本程度上财产。

性能差的代码 性能更好的代码
h = gobject (1500);p = 0 (500 3);ix = 1:500 h(ix) = text(ix/500,ix/500,num2str(ix));结束drawnow%在同一个循环中获取和设置,%在每次通过时提示完整的更新ix = 1:50 00 pos = get(h(ix),“位置”);ext =得到(h (ix),“程度”);: p (ix) = (pos (1) + (ext (3) + ext (1)),pos ext (2) + (2) + ext (4), 0);集(h (ix),“位置”p(第九)):结束drawnow
h = gobject (1500);p = 0 (500 3);ix = 1:500 h(ix) = text(ix/500,ix/500,num2str(ix));结束drawnow%获取并保存属性值ix=1:50 00 pos = get(h(ix),“位置”);ext =得到(h (ix),“程度”);: p (ix) = (pos (1) + (ext (3) + ext (1)),pos ext (2) + (2) + ext (4), 0);结束%设置属性值和%在循环后调用drawnow第九= 1:50 0组(h (ix),“位置”p(第九,:));结束drawnow

这段代码执行得很差,因为:

  • 程度上属性取决于其他值,如屏幕分辨率、图形大小和轴限制,因此查询此属性可能导致完全更新。

  • 每一套位置属性使下一次获取时必须进行完全更新程度上房地产发生。

性能更好,因为以下代码:

  • 在一个循环中查询所有属性值,并将这些值存储在数组中。

  • 在单独的循环中设置所有属性值。

  • 调用drawnow第二个循环结束后。

改变文本程度上旋转的标签

在你改变文本的情况下程度上属性旋转轴标签时,使用轴属性效率更高XTickLabelRotation,YTickLabelRotation,ZTickLabelRotation

这个话题有用吗?