如何改变实例的属性在Matlab

问题描述:

我是新来MATLAB的,我想写改变这个对象的属性一类的方法:如何改变实例的属性在Matlab

classdef Foo 

    properties 
    a = 6; 
    end 
    methods 
    function obj = Foo() 
    end 

    function change(obj,bar) 
     obj.a = bar 
    end 
    end 
end 




foo = Foo() 

foo.change(7) //here I am trying to change the property to 7 

原来属性仍然是6.

MATLAB使值类别句柄类别之间的差异。值类的实例隐式地复制到赋值上(因此表现得像普通的MATLAB矩阵),句柄类的实例不是(因此其行为与其他OOP语言中的实例相似)。

因此,您必须退回修改的对象的值类:

classdef ValueClass 
    properties 
     a = 6; 
    end 
    methods 
     function this = change(this, v) 
      this.a = v; 
     end 
    end 
end 

这样称呼它:

value = ValueClass(); 
value = value.change(23); 
value.a 

或者,你可以从handle类派生类:

classdef HandleClass < handle 
    properties 
     a = 6; 
    end 
    methods 
     function change(this, v) 
      this.a = v; 
     end 
    end 
end 

并且将其命名为:

h = HandleClass(); 
h.change(23); 
h.a 

MATLAB documentation有更多的信息。

+0

史诗般的答案,对我来说完全有意义,即使它不那么优雅 – mko 2013-03-08 09:10:37