自动更新的 Matlab 属性

Posted

技术标签:

【中文标题】自动更新的 Matlab 属性【英文标题】:Matlab property that automatically updates 【发布时间】:2012-10-03 15:58:41 【问题描述】:

作为 MATLAB 的新手,我正在尝试编写一个类,如果两个属性之一更改值,则会自动重新计算第三个属性。

似乎事件和侦听器是为此而生的,但我就是无法掌握它们的基本实现。

我最近的尝试是这样的

% when property a or b is altered, c will automatically be recalculated

classdef myclass < handle
    properties
        a = 1;
        b = 2;
        c
    end

    events
        valuechange
    end

    methods

        function obj = myclass()
            addlistener(obj,'valuechange', obj.calc_c(obj))
        end

        function set_a(obj, input)
            obj.a = input;
            notify(obj, valuechange)
        end

        function set_b(obj, input)
            obj.b = input;
            notify(obj, valuechange)

        end

        function calc_c(obj)
            obj.c = obj.a + obj.b
        end
    end
end

返回以下错误

Error using myclass/calc_c
Too many output arguments.
Error in myclass (line 18)
            addlistener(obj,'valuechange', obj.calc_c(obj)) 

我做错了什么?

【问题讨论】:

这里描述了我正在寻找的功能:***.com/questions/8098935/… 我还在这里发布了一个监听器/观察器示例:***.com/questions/9153044/… 【参考方案1】:

难道你不想将 c 定义为 Dependent,以便每次使用它时都确定它已经更新了吗?

类似的东西

classdef myclass < handle
    properties
        a
        b
    end
    properties (Dependent) 
        c
    end

    methods
    function x = get.x(obj)
        %Do something to get sure x is consistent
        x = a + b;
    end
end

【讨论】:

以上是关于自动更新的 Matlab 属性的主要内容,如果未能解决你的问题,请参考以下文章

mysql如何让时间属性不自动更新

自动更新 NSManagedObject 属性修改时间戳

自动更新 WPF 数据网格中的计算属性

mysql 怎么将时间自动更新自动加上72小时

EF Core中怎么实现自动更新实体的属性值到数据库

win10怎么把显卡驱动自动更新关掉?