Matlab外部产品如何功能?怎么样?

时间:2011-11-15 15:44:49

标签: matlab outer-join

我有以下计算我想在matlab中进行矢量化。

我有一个N x 3阵列,称之为a。 我有一个4 x 1单元格的函数句柄,称之为b

我想创建一个Nx4矩阵c,这样c(i,j) = b{j}(a(i,:)

b实际上是一个数组,但我不知道如何以matlab理解使用矩阵的格式写下c的表示。

2 个答案:

答案 0 :(得分:3)

如果您的函数处理数组(即b{j}(a)返回示例中的Nx1数组),您可以使用CELLFUNCELL2MAT生成输出数组:

c = cell2mat( cellfun( @(bFun)bFun(a),b,'UniformOutput',false) );

如果你的函数只处理单个行的工作(即b{j}需要分别应用于a的每一行,你可以将ARRAYFUN抛出混合(可读性有点受损)但是,基本上,您通过cellfun将b的每个元素通过arrayfun应用于a的每一行:

c = cell2mat(...
       cellfun( @(bFun)arrayfun(...
            @(row)bFun(a(row,:)),1:size(a,1)),...
       b,'UniformOutput',false) ...
    );

答案 1 :(得分:1)

pdist2几乎解决了上述问题。可能比我更聪明的人可以弄清楚如何将两者结合起来。