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

Dav*_*rks 7 syntax matlab

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


引用matlab文档:关于设置轴属性的Matlab文档

代码段:

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

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

在此输入图像描述

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

警告:Struct字段分配会覆盖类"double"的值.有关详细信息,请参阅MATLAB R14SP2发行说明,将非结构变量指定为结构显示警告.

我尝试分配一个双,就像说42.0,但它不喜欢那样更好.

Hok*_*oki 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`
Run Code Online (Sandbox Code Playgroud)

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

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

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