我有两个结果矩阵A = 128x631
和B = 128x1014
,我有一个函数SSD
,它将两个元素(x,y)作为参数,然后计算差值的平方和。我还有一个名为SSDMatrix
的631x1014 0的矩阵,准备将我的SSD功能的结果放入。
我要做的是将A的每个元素与B的每个元素进行比较,方法是将它们传递给SSD
,但我无法弄清楚如何构造for循环以获得所需的结果。
当我尝试:
SSDMatrix = SSD(A, B);
我得到了我正在寻找的结果,但仅适用于第一个细胞。如何为A
和B
?
目前我有这个:
SSDMatrix = zeros(NumFeatures1,NumFeatures2);
for i = 1:631
for j = 1:1014
SSDMatrix(i,j) = SSD(A,B);
end
end
这只会导致第一个答案重复631 * 1014次,所以我需要一种方法来索引A和B,以便为SSDMatrix的每个(i,j)获得适当的答案。
答案 0 :(得分:1)
似乎你需要做这样的事情 -
SSDMatrix = zeros(NumFeatures1,NumFeatures2);
for i = 1:631
for j = 1:1014
SSDMatrix(i,j) = sum( (A(:,i) - B(:,j)).^ 2 );
end
end
这个,你可以用pdist2
来实现,它可以得到求和平方距离的平方根。现在,请注意pdist2
是Statistics Toolbox
的一部分。因此,要获得所需的输出,您可以 -
out = pdist2(A.',B.').^2;
或bsxfun
-
out = squeeze(sum(bsxfun(@minus,A,permute(B,[1 3 2])).^2,1));