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