Find closest matrix from list
1 次查看(过去 30 天)
显示 更早的评论
I've got a matrix A(3x4) and a list of similar matrix M(i).x, where i=1:100. I need to find the matrix from list M which will be closest to my matrix A. How can I do that?
3 个评论
Iain
2013-7-30
closest in what sense?
if:
A = [0 1];
which would be closer
M(1).x = [0 1000];
M(2).x = [500 501];
M(3).x = [200 -200];
回答(3 个)
Jan
2013-7-30
bestValue = -Inf;
bestIndex = 0;
for k = 1:numel(M)
Value = getDistance(A, M(k).x);
if Value > bestValue
bestValue = Value;
bestIndex = k;
end
end
Now insert your criterion to determine the distance as you like. Perhaps you are looking for "Value < bestValue" and want to start with +Inf.
Azzi Abdelmalek
2013-7-30
编辑:Azzi Abdelmalek
2013-7-30
I propose this criterion sum(abs(a-b)) to be the smallest
for k=1:100
s(k)=sum(sum(abs(A-M(k).x)))
end
[~,idx]=min(s);
Res=M(idx).m
0 个评论
Andrew
2013-7-30
编辑:Andrew
2013-7-30
6 个评论
Iain
2013-7-30
The question is what definition are you using for "distance" all these are valid options...
distance = max(abs(A(:)-M(i).x(:)));
distance = sum(abs(A(:)-M(i).x(:)));
distance = sum((A(:)-M(i).x(:)).^2);
distance = max(abs(A(:)-M(i).x(:)+mean(M(i).x(:))-mean(A(:)) ));
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!