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

标签 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 发出警告并且没有为我更改轴颜色:

Warning: Struct field assignment overwrites a value with class "double". See MATLAB R14SP2 Release Notes, Assigning Nonstructure Variables As Structures Displays Warning, for details.

我尝试分配一个 double ,比如 42.0,但它并没有更好地喜欢它。

最佳答案

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

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

当您尝试 ax.Color = 'y'; 时,Matlab 认为您想用新变量 ax 覆盖 ax [double] code> 这将是一个结构,字段为 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`

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

关于matlab - 在 R2014b 之前的 Matlab 版本上使用点符号访问图形对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389281/

相关文章:

MATLAB 根函数在 MATLAB 和 Simulink 中的行为不同?

matlab - 从win64到win32的pnet通信

algorithm - 图像处理中的反滤镜?

python - 对大型数据集(2 亿个变量)运行逻辑回归的有效方法是什么?

javascript - var functionName = function() {} vs function functionName() {}

php - do-while 循环的替代语法(使用冒号)

c++ - 有没有办法在初始化列表中调用成员函数?

java - java中该三维数组沿第三维的平均值

php - 1064 预约 Pro 出错

java - this 和 Activity.this 有什么区别