有效地构造两个向量之间减法的核矩阵

时间:2014-07-26 19:20:22

标签: performance matlab matrix vectorization

给定X =(x_1,...,x_m),Y =(y_1,...,y_n),如何有效地构建m-by-n矩阵K ?不使用 for 循环? 矩阵K的(i,j)元素是1 /(x_i-y_j)。

在我看来,逐行构造效率不高。

1 个答案:

答案 0 :(得分:4)

Y的每个元素为X的每个元素创建一个带有减法的二维矩阵。这可以使用带有@minus函数句柄的 bsxfun 以矢量化方式完成,以处理减法。然后使用1elementwise-division除以每个2D矩阵元素。这两个步骤可以在一行中执行,以便为我们提供所需的输出,如下所示 -

K = 1./bsxfun(@minus,X(:),Y(:).')