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

Indexing elements of parameters of a function within nested for loops

我有两个结果矩阵,A = 128x631B = 128x1014 我有一个函数 SSD,它以两个元素 (x,y) 作为参数,然后计算平方差。我还有一个 631x1014 的 0 矩阵,叫做 SSDMatrix,准备把我的 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) 获得适当的答案。

看来你需要做这样的事情 -

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));