在构造函数以外的函数中设置 class 变量

set class variable in other function than constructor

这可能是一个非常基本的问题,但我在互联网上没有找到任何东西。 我正在编写一个 matlab class,它具有各种 class 属性。我正在设置所有这些(一些带有输入参数,一些默认)。 我在另一个 class 方法中更改了一个 class 变量。 这不起作用(变量在超出函数范围时被删除)。 解决这个问题的最佳方法是什么? 把所有东西都放在构造函数中?

classdef MyClass
properties
    matrix1
    matrix2
    matrix3
end
methods
    function obj = MyClass()
    obj.matrix1 = zeros(2)
    obj.matrix2 = ones(3)
    end

    function obj = func(obj)
    obj.matrix2 = 3*ones(3)
    end
    function obj = func2(obj)
    obj.matrix3 = obj.matrix2 %this does not work. matrix2 has its original value, not 3*ones(3)
    end
end
end

我这样称呼它

object = MyClass()
   object.func()
   object.func2()

MATLAB 同时支持值类型和引用类型 classes.

您定义 class 的方式本质上是一种值类型,这意味着每个函数调用都使用您的对象的 copy,并且不会引用调用对象的数据。

要使 class 充当引用类型,然后根据需要修改对象的数据,请从 handle.

继承 class

做:

classdef MyClass < handle
    % Everything else same here...
end