0

こんにちは、A に 2 つの行列があり、BI は A 行列の k 個の最近傍を見つけたいと考えています。私の matlab コードは次のとおりです。

A=[1 2 1;3 4 1;5 6 1;];
  B=[11 12 2;13 4 2;15 16 2;17 18 2;1 2 2;3 4 2;5 6 2;];
  [row,col]=size(A);
  [row1,col1]=size(B);
  dist=zeros(row,row1);
  nnarray = zeros(row,row1);
  k=5;
  nnarray1 = zeros(row,k);
  for i=1:row
  for j=1:row1
        dist(i,j)=sqrt(sum((A(i,:)-B(j,:)).^2));
  end
  [y,index]=sort(dist(i,:));
    nnarray(i,:)=index';
    end

nnarray の出力行列は次のとおりです。 // A 行列の最近傍

5   6   7   2   1   3   4
6   5   7   2   1   3   4
7   6   5   2   1   3   4

ここで、出力は、A マトリックスの各要素に対して NEAREST NEIGHBOR を 1 つだけ取得しました。しかし、Aの各要素の5つの最近傍、つまりA(1,1)、A(1,2)などの5つの最近傍を見つけたい.

どうやってするの?コードをどこで変更すればよいですか?

4

2 に答える 2

1

あなたの質問を正しく理解できれば、コードに次の変更を加えることができます。

A=[1 2 1;3 4 1;5 6 1;];
B=[11 12 2;13 4 2;15 16 2;17 18 2;1 2 2;3 4 2;5 6 2;];

A = A(:);
B = B(:);

% ... the rest of your code

これにより、 の各要素の最近傍が検出されますABここで、A と B の要素は単一の列の順序になっています。

于 2013-09-07T21:32:59.423 に答える