我有以下计算我想要在matlab中进行矢量化。Matlab的外置函数?怎么样?
我有一个N×3的数组,称之为a
。 我有一个4×1单元格的函数句柄数组,称它们为b
。
我想创建一个Nx4矩阵c
,这样c(i,j) = b{j}(a(i,:)
。
b
实际上是一个数组,但我不知道如何用matlab会理解使用矩阵的格式写下我对c的表示形式。
我有以下计算我想要在matlab中进行矢量化。Matlab的外置函数?怎么样?
我有一个N×3的数组,称之为a
。 我有一个4×1单元格的函数句柄数组,称它们为b
。
我想创建一个Nx4矩阵c
,这样c(i,j) = b{j}(a(i,:)
。
b
实际上是一个数组,但我不知道如何用matlab会理解使用矩阵的格式写下我对c的表示形式。
如果你的函数处理数组上工作(即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) ...
);
pdist2几乎解决了上述问题。也许有人比我更聪明,可以想出如何将两者联合起来。