给定X =(x_1,...,x_m),Y =(y_1,...,y_n),如何有效地构建m-by-n矩阵K ?不使用 for 循环? 矩阵K的(i,j)元素是1 /(x_i-y_j)。
在我看来,逐行构造效率不高。
答案 0 :(得分:4)
从Y
的每个元素为X
的每个元素创建一个带有减法的二维矩阵。这可以使用带有@minus
函数句柄的 bsxfun
以矢量化方式完成,以处理减法。然后使用1
将elementwise-division
除以每个2D矩阵元素。这两个步骤可以在一行中执行,以便为我们提供所需的输出,如下所示 -
K = 1./bsxfun(@minus,X(:),Y(:).')