当前位置:  开发笔记 > 编程语言 > 正文

如何修改Matlab对象的属性

如何解决《如何修改Matlab对象的属性》经验,为你挑选了1个好方法。

我创建了一个MATLAB类,类似于:

classdef myclass

  properties
      x_array = [];
  end

  methods
    function increment(obj,value)
       obj.x_array = [obj.x_array ; value);
    end
  end
end

问题是,x_array当我调用increment()函数时,属性永远不会被修改:ex:

>>s = myclass
>>increment(s,5)

>>s.x_array
ans = []

我做了一些研究,我得出的结论是,这是因为MATLAB使用了Lazy Copy for objects,使得我的类继承HANDLE类应该已经解决了这个问题,但事实并非如此,有人知道为什么会发生这种情况吗?如果扩展句柄类是解决方案,这不是正确的方法:

classdef myclass < handle

还是有任何额外的步骤?



1> Azim..:

这与此问题类似.简而言之,您应该做的就是从句柄类继承.

快速举例

文件myclass.m的内容

classdef myclass

现在,从Matlab命令提示符,您可以执行以下操作

>> s=myclass;
>> s.increment(5)
>> s.increment(6)
>> s

s = 

myclass handle

properties:
    x_array: [5 6]

lists of methods, events, superclasses

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有