我希望能够在Matlab中向量化以下计算。我有一个N x 3的数组,称之为a。我有一个4 x 1的函数句柄单元数组,称之为b。我想创建一个Nx4矩阵c,使得c(i,j) = b{j}(a(i,:))。b实际上是一个数组,但我不知道如何用Matlab可以理解的矩阵格式来表示c。请注意保留HTML标记。
如果您的函数处理数组(例如,在您的示例中,b{j}(a)
返回一个 Nx1 的数组),您可以使用 CELLFUN 和 CELL2MAT 生成输出数组:
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) ...
);