如何将函数应用于矩阵的每一行并返回一个更大的矩阵

时间:2012-11-07 01:08:07

标签: matlab matrix

我有一个函数接受维度[1,2]的矩阵并返回维度矩阵[1,136]。我还有一个维度矩阵[N,2]。我想将此函数应用于矩阵的每一行,最终得到一个维度矩阵[N,136]。

我完全迷失了如何在Matlab中做到这一点。 for循环解决方案就足够了(我现在甚至都做不到这一点),但据我所知,在Matlab中有更好,更可并行化的方法。

我目前的尝试是这样的:

  phi = arrayfun(@(x,y) gaussianBasis([x y])' , trainIn(:,1), trainIn(:,2), 'UniformOutput', false);

其中gaussianBasis是返回向量[136,1]的函数,trainIn是矩阵[N,2]。 phi应该是[N,136],但这会返回一个N个单元格数组,每个数组都包含一个矩阵[1,136]。

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您只需要使用cat并将其连接到第一维:

phi = cat(1, phi{:})

这应该给你一个N x 136矩阵