【问题标题】:MATLAB: apply a function to every n items in a vectorMATLAB:将函数应用于向量中的每 n 个项目
【发布时间】:2012-01-25 19:42:42
【问题描述】:

这个相关的问题How can I apply a function to every row/column of a matrix in MATLAB? 似乎表明一种方法是使用 num2cell,我有点想远离它。

这就是我想要做的。我有一个三角形网格的索引列表,索引索引顶点列表。

我想在前 3 个索引上运行 func(a,b,c),然后是接下来的三个索引,依此类推。

所以我可以reshape(idxs,3,[]) 所以现在我已经将我的数据放入三元组中作为列向量。但是arrayfun 并没有做我想做的事。

寻找类似列映射运算符的东西。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    首先,如有必要,将您的 func 正确矢量化,以便参数可以是等长的列表:

    vec_func = @(a,b,c)(arrayfun(@func,a,b,c))
    

    然后,您可以直接访问idxs 的每三个元素:

    vec_func( idxs(1:3:end), idxs(2:3:end), idxs(3:3:end) )
    

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多