Function to take grid reference
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
fairly new to this, would any body be able to tell me how i can create a function that can take a grid reference eg A10, C4, F6, etc and convert it into a row and column index? oh btw the grid has to be ten by ten!
0 commentaires
Réponse acceptée
Stephen23
le 9 Déc 2015
Modifié(e) : Stephen23
le 9 Déc 2015
>> fun = @(s)[upper(s(1))-64,str2num(s(2:end))];
>> fun('A10')
ans =
1 10
>> fun('C4')
ans =
3 4
>> fun('F6')
ans =
6 6
1 commentaire
Stephen23
le 9 Déc 2015
Try this:
S = input('Enter the grid reference you wish to convert: ','s');
C = upper(S(1))-64
R = str2num(s(2:end))
Plus de réponses (1)
Walter Roberson
le 9 Déc 2015
Under the condition that it is 10 by 10 exactly,
r1 = GR(1) - 'A' + 1;
if length(GR) == 2
r2 = GR(2) - '0';
else
r2 = 10;
end
You do not specify whether the letters indicate rows or columns so make the appropriate choice [r1,r2] or [r2,r1]
If the grid can be larger than 10 x 10 then the "else" would have to be adjusted. If the grid can be larger than 26 then the r1 logic would need to be adjusted.
2 commentaires
Walter Roberson
le 9 Déc 2015
Note: Stephen's code is more compact; my code is more efficient for the particular requirements that were given.
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!