我在A,B中有两个矩阵。我想找到一个矩阵的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的ouptut矩阵是: // 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个最近邻居。
怎么做? 我应该在哪里修改我的代码?
答案 0 :(得分: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
这将找到A
中B
中每个元素的最近邻居,其中A和B的元素现在是单列顺序。
答案 1 :(得分:0)
这里您编写的代码是正确的,但要为您修改的每个元素找到每个代码 这里
for i=1:row
for j=1:row1
dist(i,j)=sqrt(sum((A(1,1)-B(j,:)).^2));
end
end
像你那样概括你的代码