How to find the nearest matrix between two matrices?
1 次查看(过去 30 天)
显示 更早的评论
Find the nearest row matching between matrix.
I have a matrix
A = [2013 03 17 1 6 0]; % 1x6 double
I have another matrix
B = [2013 3 17 0 5 1.012; 2013 3 17 1 6 20.47]; % 4x6 double
I want to find the index of the nearest matrix A in B.
Can anyone please help?
Any help will be greatly appriciated.
0 个评论
采纳的回答
Rik
2022-7-18
Convert each row to a date format (either datetime or datenum).
After that you can subtract one from the other, use abs and min to find the smallest difference. Use the second output of min to find the index of the smallest difference.
1 个评论
Stephen23
2022-7-18
编辑:Stephen23
2022-7-18
A = [2013,3,17,1,6,0]; % 1x6 double
B = [2013,3,17,0,5,1.012; 2013,3,17,1,6,20.47]; % 4x6 double
The best way of storing timestamps is as DATETIME objects:
Adt = datetime(A)
Bdt = datetime(B)
Then just use ABS and MIN exactly as Rik recommended:
[~,idx] = min(abs(Adt-Bdt))
Bdt(idx)
更多回答(1 个)
Abderrahim. B
2022-7-18
编辑:Abderrahim. B
2022-7-18
clear
A = [2013,3,17,1,6,0]; % 1x6 double
B = [2013,3,17,0,5,1.012; 2013,3,17,1,6,20.47]; % 4x6 double
A = datetime(A) ;
B = datetime(B) ;
minSize_B = max(size(B)) ;
nearestAB = [] ;
for ii = 1:minSize_B
nearestAB = [nearestAB abs(A - B(ii))] ;
end
[~, nearestB_indx] = min(nearestAB) % Means, the 4th row in B
nearestB = B(nearestB_indx)
5 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Function Creation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!