在Matlab

时间:2017-05-31 09:38:34

标签: arrays matlab oop vectorization

我有一个对象数组(用户定义的类),我想为所有这些对象调用一个方法。该方法代表几个数据通道的处理步骤,与treir自己的对象相关联。

我看到两个解决方案:

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

但我不喜欢这两种解决方案,因为我应该在第一种情况下为每个方法调用添加相同的代码,或者在第二种情况下为每个方法定义添加相同的代码。 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

典型的模式如下:

function step(objArray)
    for i = 1:numel(objArray)
        % some processing on objArray(i)
    end
end

在您的问题中,不需要在单个元素上递归调用方法的奇怪if - 只需直接对每个元素进行处理。