【问题标题】:find k nearest neighbours for each element in a matrix in matlab在matlab中为矩阵中的每个元素找到k个最近邻
【发布时间】:2013-09-11 17:35:43
【问题描述】:

hii 我在 A,B 中有两个矩阵。我想找到 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。 但我想找到 A 中每个元素的 5 个最近邻,即 A(1,1)、A(1,2) 等的 5 个最近邻。

怎么做? 我应该在哪里修改我的代码?

【问题讨论】:

    标签: matlab nearest-neighbor


    【解决方案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
    

    这将在B 中找到A 中每个元素的最近邻居,其中A 和B 的元素现在按单列顺序排列。

    【讨论】:

      【解决方案2】:

      这里您编写的代码是正确的,但是要为您修改的每个元素找到每个 这里

      for i=1:row
      for j=1:row1
          dist(i,j)=sqrt(sum((A(1,1)-B(j,:)).^2));
      end
      end
      

      就像你概括你的代码一样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-09
        • 2014-06-20
        • 1970-01-01
        • 2021-09-07
        • 2014-04-12
        • 2015-04-17
        • 2017-11-23
        • 1970-01-01
        相关资源
        最近更新 更多