自动更新的Matlab属性

时间:2012-10-03 15:58:42

标签: matlab matlab-class

作为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)) 

我做错了什么?

1 个答案:

答案 0 :(得分: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