我有一个对象数组(用户定义的类),我想为所有对象调用一个方法。该方法代表了多个数据通道的处理步骤,与他们自己的对象相关联。
我看到两种解决方案:
1) 编写一个 for 循环来调用向量中每个对象的方法:
for i=1:numel(objArray)
objArray(i).step;
end
2)在类方法中添加长度检查,如下所示:
function step(obj)
if numel(obj)>1
for i=1:numel(obj)
step(obj(i));
end
return;
end
% some processing ...
end
但是我不喜欢这两种解决方案,因为我应该为第一种情况下的每个方法调用或第二种情况下的每个方法定义添加相同的代码。 有更好的方法吗?
最佳答案
遵循的典型模式如下:
function step(objArray)
for i = 1:numel(objArray)
% some processing on objArray(i)
end
end
您的问题中不需要那种奇怪的 if
来递归地调用单个元素上的方法 - 只需直接对每个元素进行处理即可。
关于arrays - Matlab中对象数组的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281133/