如何在 MATLAB R2014b 中访问 PropertyEvent 的新值?

Posted

技术标签:

【中文标题】如何在 MATLAB R2014b 中访问 PropertyEvent 的新值?【英文标题】:How do I access the new value of an PropertyEvent in MATLAB R2014b? 【发布时间】:2015-02-07 20:58:08 【问题描述】:

背景

在以前版本的 MATLAB(例如 R2013b)中,我有一个巧妙的技巧,我可以将侦听器附加到坐标区句柄的 YLim 属性,当坐标区 y 限制发生更改时会通知我:

addlistener(gca, 'YLim', 'PreSet', @(src,ev_data) disp(ev_data.NewValue))

我正在使用它来更新第二个图,该图将显示这些轴中可见数据子集的一些汇总统计信息。那太棒了!您放大,第二个图形会自行更新。太好了。

将其设为PreSet(而不是PostSet)侦听器很有用,因为这样我可以检查新值是否与旧值相同,从而避免在不必要时重新计算这些统计信息。

问题

但是,这在 R2014b 中不再适用于我。我可以附加事件侦听器,但是当我触发事件时,我收到以下错误消息:

类 event.PropertyEvent 没有合适的方法、属性或字段 NewValue。

我相信这与 HG2 图形系统有关。通过适当的断点,我们可以查看事件数据。在 R2013b 中:

K>> ev_data
ev_data =
    handle.PropertySetEventData

K>> get(ev_data)
              Type: 'PropertyPreSet'
            Source: [1x1 schema.prop]
    AffectedObject: [1x1 axes]
          NewValue: [0.5000 220.5000]

在 R2014b 中,我们似乎缺少 NewValue 字段:

K>> ev_data
ev_data = 
  PropertyEvent with properties:

    AffectedObject: [1x1 Axes]
            Source: [1x1 matlab.graphics.internal.GraphicsMetaProperty]
         EventName: 'PreSet'

去哪儿了?!当然,必须有一种访问它的方法。如果您无法访问您尝试将其设置为的新值,则属性预设事件处理程序将毫无用处。

【问题讨论】:

还讨论了at MatlabCentral。 好吧,该死的。我猜NewValue 真的没了,我得解决它。 看看这个new post on UndocumentedMatlab - 看起来它可能包含你想要的东西。 【参考方案1】:

属性 meta.property 对象包含属性的 set 和 get 方法的函数句柄。 SetMethod 属性包含该属性的 set 方法的函数句柄,而 GetMethod 属性包含该属性的 get 方法的函数句柄。 希望这个link 能帮到你

【讨论】:

以上是关于如何在 MATLAB R2014b 中访问 PropertyEvent 的新值?的主要内容,如果未能解决你的问题,请参考以下文章

Matlab R2014b安装教程

在2014b中重绘2013b中保存的图

在 python 中访问时如何保留 matlab 结构?

如何在 MAMP PRO 中降级 phpMyAdmin 版本

Surface pro 3 麦克风阵列,如何分别访问它们?

在 Matlab 中访问单元格中的向量