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

在R2014b之前的Matlab版本上使用点符号访问图形对象属性,matlab,syntax,Matlab,Syntax,这里尝试在matlab绘图中更改轴的颜色 参考matlab文档: 代码段: 这只是文档中示例的复制和粘贴(如下所示): 但是matlab抛出了一个警告,并没有为我更改轴的颜色: 警告:结构字段赋值会用类覆盖值 “双重”。请参见MATLAB R14SP2发行说明,指定非结构化 变量作为结构显示警告,以获取详细信息 我尝试分配了一个双精度,比如说42.0,但它并不喜欢这样做。您的警告消息似乎表明您使用的是Matlab R2014b之前的版本 如果是这样的话,你就不能直接使用点符号,因为当你这样做

这里尝试在matlab绘图中更改轴的颜色


参考matlab文档:

代码段:

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

但是matlab抛出了一个警告,并没有为我更改轴的颜色:

警告:结构字段赋值会用类覆盖值 “双重”。请参见MATLAB R14SP2发行说明,指定非结构化 变量作为结构显示警告,以获取详细信息


我尝试分配了一个双精度,比如说42.0,但它并不喜欢这样做。

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

如果是这样的话,你就不能直接使用点符号,因为当你这样做时,
ax=gca
您将获得一个返回值
ax
,该值属于
double
类。该值是对象句柄的ID(本例中为当前轴),但不是句柄本身

当您尝试
ax.Color='y'
,Matlab认为您想用一个新变量
ax
覆盖
ax[double]
,该变量将是一个结构,字段为
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'现在应该是有效的

我在我的机器上遇到了相同的错误首先,然后
ax.Color='y'您使用的是R2014b还是早期版本?回答不错!我不知道
句柄
函数。似乎。。。汉迪:-呸!r2014a,太奇怪了,我几天前刚安装了它,我认为它是最新最棒的。@LuisMendo,在某些情况下非常方便,如果你必须经常刷新对象,它也会更快。如果您喜欢,请尝试
ax=java(句柄(gca))
。它开启了一整套的可能性。。。尽管未记录。@LuisMendo,
handle
命令的更多信息(据我所知,所有现有信息)可以在上找到。我一直都很高兴。
ax = gca ; %// retrieve the `double` reference to the handle
... 
ax = handle(ax) ; %// the value "ax" returned is an `object`, not a `double`