Find closest matrix from list
1 view (last 30 days)
Show older comments
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 Comments
Iain
on 30 Jul 2013
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];
Answers (3)
Jan
on 30 Jul 2013
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
on 30 Jul 2013
Edited: Azzi Abdelmalek
on 30 Jul 2013
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 Comments
Andrew
on 30 Jul 2013
Edited: Andrew
on 30 Jul 2013
6 Comments
Iain
on 30 Jul 2013
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(:)) ));
See Also
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!