嵌套for循环中函数参数的索引元素

时间:2015-02-27 19:26:56

标签: matlab matrix

我有两个结果矩阵A = 128x631B = 128x1014,我有一个函数SSD,它将两个元素(x,y)作为参数,然后计算差值的平方和。我还有一个名为SSDMatrix的631x1014 0的矩阵,准备将我的SSD功能的结果放入。

我要做的是将A的每个元素与B的每个元素进行比较,方法是将它们传递给SSD,但我无法弄清楚如何构造for循环以获得所需的结果。

当我尝试:

SSDMatrix = SSD(A, B);

我得到了我正在寻找的结果,但仅适用于第一个细胞。如何为AB

的每个元素重复此过程

目前我有这个:

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)获得适当的答案。

1 个答案:

答案 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来实现,它可以得到求和平方距离的平方根。现在,请注意pdist2Statistics Toolbox的一部分。因此,要获得所需的输出,您可以 -

out = pdist2(A.',B.').^2;

bsxfun -

out = squeeze(sum(bsxfun(@minus,A,permute(B,[1 3 2])).^2,1));