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

Matlab 嵌套for循环中函数参数的索引元素,matlab,matrix,Matlab,Matrix,我有两个结果矩阵,A=128x631和B=128x1014,我有一个函数SSD,它将两个元素(x,y)作为参数,然后计算平方差之和。我还有一个0的631x1014矩阵,名为SSDMatrix,可以将SSD函数的结果放入 我试图通过将A的每个元素与B的每个元素传递到SSD,来比较它们,但我不知道如何构造for循环以获得所需的结果 当我尝试时: SSDMatrix = SSD(A, B); 我得到了我想要的结果,但只得到了第一个单元格。如何对A和B的每个元素重复此过程 目前我有: SSDMatri

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

似乎需要您这样做-

SSDMatrix = zeros(NumFeatures1,NumFeatures2);    
for i = 1:631
    for j = 1:1014
        SSDMatrix(i,j) = sum( (A(:,i) - B(:,j)).^ 2 );
    end
end
这个,你也可以用,得到平方距离的平方根。现在,请注意
pdist2
统计工具箱的一部分。因此,要获得所需的输出,您可以-

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


那么,输出数组的大小必须是多少<代码>128 x 631 x 128 x 1014
?@Divakar它必须是631 x 1014
out = squeeze(sum(bsxfun(@minus,A,permute(B,[1 3 2])).^2,1));