Matlab的外积函数是什么?如何使用?

3
我希望能够在Matlab中向量化以下计算。我有一个N x 3的数组,称之为a。我有一个4 x 1的函数句柄单元数组,称之为b。我想创建一个Nx4矩阵c,使得c(i,j) = b{j}(a(i,:))。b实际上是一个数组,但我不知道如何用Matlab可以理解的矩阵格式来表示c。请注意保留HTML标记。
2个回答

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

pdist2 几乎解决了上述问题。也许有比我更聪明的人可以想出如何将两者结合起来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接