Find indices of the lowest neighbour in matrix
3 views (last 30 days)
Show older comments
Morten Jørgensen on 29 Jan 2020
Answered: Vinai Datta Thatiparthi on 3 Feb 2020
I'm trying to find the indices of the lowest value of three neighbours (red in picture below) for backtracking a path in a matrix
i = 331
j = end
[x y] = min([cost(end-1,j-1) cost(end,j-1) cost(end-1,j)])
Can anyone help me with this?
Vinai Datta Thatiparthi on 3 Feb 2020
matVal = [ .. ]; % Enter your input matrix here
% Enter the coordinates for the value of which you want to find the least neighbour of
xCoOrd = .. ;
yCoOrd = .. ;
% Find out all the neighbours of the element that you picked
convOut = conv2(double(I==I(xCoOrd, yCoOrd)), ones(3,3), 'same');
idx = find(convOut - double(I==I(xCoOrd, yCoOrd)));
% The index of the least neighbour
leastNeighbourIdx = find(I == min(I(idx)));
Use ind2sub function on the variable leastNeighbourIdx to get the answer in subscripts.
Hope this helps!
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!