# Finding both row and column indexes of nearest value

3 vues (au cours des 30 derniers jours)
Luís Henrique Bordin le 2 Avr 2024
Commenté : Image Analyst le 3 Avr 2024
Hi experts,
Please, could someone help me to find the 2 indexes, that is, the row and column indexes, corresponding to the nearest longitude and/or latitude? I could figure it out easily in a vector of 1D with find and dsearchn functions, but the problem is I cannot simply transform my matrix into a vector because longitude and latitudes are not constant all along the same row and column.
I have two matrices, one for the longitude, and another for the latitude. Both matrices are 224x164.
I need the row and column indexes of the nearest longitude of 25.983 on the longitude matrix; And idem for the latitude -84.64.
Thank you very much in advance!
Luis
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Image Analyst le 2 Avr 2024
To find the nearest row and column, subtract the reference value from your matrix and then use find. To be super explicit, here are the steps:
m = magic(7)
m = 7x7
30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
refValue = 27;
diffMatrix = abs(m - refValue)
diffMatrix = 7x7
3 12 21 26 17 8 1 11 20 20 18 9 0 2 19 21 19 10 1 8 10 22 13 11 2 7 9 18 14 12 3 6 15 17 23 6 4 5 14 16 24 15 5 4 13 22 25 16 7
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
minDifferenceValue = min(diffMatrix, [], 'all')
minDifferenceValue = 0
[row, column] = find(diffMatrix == minDifferenceValue)
row = 2
column = 6
##### 4 commentairesAfficher 2 commentaires plus anciensMasquer 2 commentaires plus anciens
Luís Henrique Bordin le 3 Avr 2024
I tried your suggestion but I couldn't handle. I just needed the intersection indexes of those lines, so I took the indexes == 1, and then I got the intersection indexes with polyxpoly function, and it worked.
[xlon, ylon] = find(ind_lon == 1);
[xlat, ylat] = find(ind_lat == 1);
[xi,yi] = polyxpoly(xlon, ylon, xlat, ylat)
Thank you anyway, it is always good to learn new alternatives.
Image Analyst le 3 Avr 2024
OK. Next time, include your data so we can get you answer(s) right away with your own actual data.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Geographic Plots dans Help Center et File Exchange

R2019b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by