小编mhm*_*msa的帖子

如何在MATLAB中更快地制作矢量和矩阵的点积?

我的代码工作但是它相当慢,我需要多次运行它,因此效率非常低.我很肯定有一种更有效的计算方法.

代码是这个等式的实现: MMD

其中k(x,y)是两个矢量xi和yj的点积,分别是两个矩阵A和B的行i,j.

我还要注意每个矩阵中的行数是数千.

这是我的代码

m=size(A,1);
Kxx=0;
for i=1:m
    x=A(i,:);
    X=A(i+1:end,:);
    Kxx=Kxx+2*sum(dot(ones(m-i,1)*x,X,2));
end
Kxx=Kxx/(m*(m-1));

n=size(B,1);
Kyy=0;
for j=1:n
   y=B(j,:);
   YY=B(j+1:end,:);
   Kyy=Kyy+2*sum(dot(ones(n-j,1)*y,YY,2));
end
Kyy=Kyy/(n*(n-1));

Kxy=0;
for i=1:m
    x=A(i,:);
   for j=1:n
       y=B(j,:);
       Kxy=Kxy+dot(x,y);
   end
end
Kxy=Kxy*2/(m*n);

Dxy=Kxx+Kyy-Kxy;
Run Code Online (Sandbox Code Playgroud)

matlab matrix vectorization

0
推荐指数
1
解决办法
313
查看次数

标签 统计

matlab ×1

matrix ×1

vectorization ×1