无法使用matlab类中的属性

bio*_*ios 1 matlab matlab-class

以下MATLAB代码不起作用.我想这事做的是,在功能转换,MATLAB试图等于对象AB而不仅仅是设置值相同.任何解决方法?

classdef foo
    %FOO Summary of this class goes here
    %   Detailed explanation goes here

    properties
        A=5
        B=0
    end

    methods
        function changer(obj)
            obj.B=obj.A
        end
    end

end
Run Code Online (Sandbox Code Playgroud)

Sam*_*rts 5

我认为代码实际上工作正常,只是没有做到你期望的.

您定义它的方式foo是一个类,因此它具有值语义,而不是引用(或句柄)语义.执行时changer(myobj),MATLAB将使用新值B创建myobj的副本并将其返回给您.原件myobj保持不变.实现值类时,通常会添加一个输出参数changer,以便能够进一步使用此新副本.

function obj = changer(obj)
Run Code Online (Sandbox Code Playgroud)

如果将foo设置为句柄类,则继承自handle:

classdef foo<handle
Run Code Online (Sandbox Code Playgroud)

它将具有引用(或句柄)语义,其中原始myobj被修改(然后您不再需要输出参数changer):

>> myobj = foo;
>> changer(myobj); % or alternatively myobj.changer
>> myobj.B
ans =
     5
Run Code Online (Sandbox Code Playgroud)