在R2014b之前的Matlab版本上使用点表示法访问图形对象属性

时间:2014-12-09 21:35:04

标签: matlab syntax

尝试在matlab中更改轴的颜色。


引用matlab文档:Matlab docs on setting axis properties

代码段:

    subplot( 'Position', [ left bottom (1/(cols*2)) (1/rows) ] );
    ax = gca;
    ax.Color = 'y';

这只是文档中示例的复制和粘贴(如下所示):

enter image description here

但是matlab会发出警告并且不会改变我的轴颜色:

  

警告:Struct字段分配会使用类覆盖值   “双”。请参阅MATLAB R14SP2发行说明,分配非结构   变量作为结构显示警告,详情。

我尝试过分配一个双,比如说42.0,但它不喜欢那样更好。

1 个答案:

答案 0 :(得分:14)

您的警告消息似乎表明您使用的是Matlab R2014b之前的版本。

如果是这样,您就无法直接访问点符号,因为当您执行ax=gca;时,您会得到类ax的返回值double。该值是对象(本例中为当前轴)的句柄ID,但不是句柄本身。

当您尝试ax.Color = 'y';时,Matlab认为您要使用新变量ax [double]覆盖您的ax,该变量将是一个结构,字段为color,并且警告。

您仍然可以访问图形对象和属性的点表示法,但您必须首先使用函数handle检索对象的实际句柄。例如:

ax = handle( gca) ; %// the value "ax" returned is an `object`, not a `double`

甚至是对图形对象句柄的现有引用:

ax = gca ; %// retrieve the `double` reference to the handle
... 
ax = handle(ax) ; %// the value "ax" returned is an `object`, not a `double`

之后,您应该能够对图形对象的所有公共属性使用点表示法。 ax.Color = 'y';现在应该有效