无法使用matlab类中的属性

问题描述:

以下MATLAB代码不起作用。我想在函数转换器中有这样做的地方,MATLAB试图等于对象AB,而不仅仅是设置值相同。任何解决方法?无法使用matlab类中的属性

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 

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

您定义它的方式,foo类,所以它具有值语义,而不是引用(或句柄)语义。当您执行changer(myobj)时,MATLAB正在创建一个myobj的副本,其中新值为B并将其返回给您。原来的myobj保持不变。在实现一个值类时,您通常会将输出参数添加到changer以便能够进一步处理这个新副本。

function obj = changer(obj) 

如果设置FOO成为手柄类,由handle继承:

classdef foo<handle 

它届时将有参考(或手柄)的语义,其中原始myobj被修改(你那么不再需要来自changer的输出参数):

>> myobj = foo; 
>> changer(myobj); % or alternatively myobj.changer 
>> myobj.B 
ans = 
    5