arrays - Matlab中对象数组的调用方法

标签 arrays matlab oop vectorization

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

我看到两种解决方案:

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/

相关文章:

java - `name()` 与 `getName()` 命名约定?

matlab - 如何从 Matlab 矩阵中丢弃一些不需要的行?

matlab - 矩阵运算难度

javascript - 如何对对象数组中的键进行排序并仅渲染一个对象

javascript - 在 VueJS 中查看存储在 Vuex 中的数组

matlab - 主成分分析

c++ - “myV”没有命名类型

java - 接口(interface)隔离原则背后的原因是什么?

javascript - Reactjs 状态初始化一个值数组

arrays - 根据数据中的关系对数组进行切片(在 Ruby 中)