Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 有效地构造两个向量之间的减法核矩阵_Performance_Matlab_Matrix_Vectorization - Fatal编程技术网

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

Performance 有效地构造两个向量之间的减法核矩阵,performance,matlab,matrix,vectorization,Performance,Matlab,Matrix,Vectorization,给定X=(X_1,…,X_m),Y=(Y_1,…,Y_n),如何高效地构造m×n矩阵K?不为循环使用? 矩阵K的(i,j)元素为1/(x_i-y_j) 在我看来,逐行构造是不够有效的。创建一个2D矩阵,用Y的每个元素减去X的每个元素。这可以通过使用和@减号函数句柄以矢量化方式完成,以处理减法运算。然后使用元素除法将1除以每个2D矩阵元素。这两个步骤可以在一行中执行,以获得所需的输出,如下所示- K = 1./bsxfun(@minus,X(:),Y(:).') 创建一个二维矩阵,其中包含Y的每

给定X=(X_1,…,X_m),Y=(Y_1,…,Y_n),如何高效地构造m×n矩阵K?不为循环使用? 矩阵K的(i,j)元素为1/(x_i-y_j)


在我看来,逐行构造是不够有效的。

创建一个2D矩阵,用
Y
的每个元素减去
X
的每个元素。这可以通过使用
@减号
函数句柄以矢量化方式完成,以处理减法运算。然后使用元素除法将
1
除以每个2D矩阵元素。这两个步骤可以在一行中执行,以获得所需的输出,如下所示-

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

创建一个二维矩阵,其中包含
Y
的每个元素与
X
的每个元素的减法。这可以通过使用
@减号
函数句柄以矢量化方式完成,以处理减法运算。然后使用元素除法将
1
除以每个2D矩阵元素。这两个步骤可以在一行中执行,以获得所需的输出,如下所示-

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

结合这两个步骤是否更好,即
K=bsxfun(@(x,y)1/(x-y),x,y')
?不,它比您的代码慢60%。使用慢速Chromebook检查。@Yvon这不是因为
@减号是内置版本之一,因此我猜它是一个优化版本。将这两个步骤结合起来是否更好,即
K=bsxfun(@(x,y)1/(x-y),x,y')
?不。它比您的代码慢60%。使用慢速Chromebook检查。@Yvon这不是因为
@减号
是内置版本之一,因此我猜是一个优化版本。