Arrays Matlab中的动态对象数组

Arrays Matlab中的动态对象数组,arrays,matlab,object,dynamic,Arrays,Matlab,Object,Dynamic,我创建了这两个代码类 classdef master < matlab.mixin.Copyable properties id list end methods function this=master(id) if nargin > 0 this.id = id; this.list = repmat(msg

我创建了这两个代码类

classdef master < matlab.mixin.Copyable


  properties
      id
      list
   end
   methods
        function this=master(id)             
            if nargin > 0
                this.id = id;
                this.list = repmat(msg,1,20);
            end
        end 
   end
end

classdef msg < matlab.mixin.Copyable


 properties
      id
      dest
      ttl
   end
   methods
        function this=msg(id,dest,ttl)             
            if nargin > 0
                this.id = id;
                this.dest = dest;
                this.ttl = ttl;
            end
        end 
   end
end
classdef master0
this.id=id;
this.list=repmat(msg,1,20);
结束
结束
结束
结束
classdef msg0
this.id=id;
this.dest=dest;
这个。ttl=ttl;
结束
结束
结束
结束
在代码的另一部分中,我尝试使用以下命令从数组“master.list”中删除一个或多个对象“msg”:

   function verifyMsgToDiscard(this,t)
        i = 1;
        while (i <= numel(this.list))
            m = this.list(i);
            if (t > m.ttl)
               this.list = this.list(this.list~=m); %remove m of the list
               clear m; %delete m from the system
            end 
            i= i + 1;
        end
    end
函数验证MSGTODiscard(此,t)
i=1;
while(我是ttl)
this.list=this.list(this.list~=m);%从列表中删除m
清除m;%从系统中删除m
结束
i=i+1;
结束
结束
我得到一个错误:

索引超过了矩阵维度

主/验证MSGTODiscard中的错误(第117行) m=该列表(i)


我想问题是为什么我在修改master.list上的元素数量的同时迭代它。此外,我可以添加和删除“列表”中的新对象“msg”,然后其大小会有所不同。如何以动态方式执行此操作。

我想您正在尝试删除
ttl
小于
t
的msg对象。这是删除元素的Matlab方法:

this.list = this.list(t <= [this.list.ttl]);
this.list=this.list(t