# Convert cell array of latitudes to array

1 view (last 30 days)
aaron Harvey on 7 Mar 2016
Answered: Walter Roberson on 7 Mar 2016
I have a array of cells containing latitudes in the format {'50.01.234';'etc} how can i convert this into something meaningfull in which i will be able to produce a grid from later?
Walter Roberson on 7 Mar 2016
Is 50.01.234 to be a single specification? For example does it mean 50 degrees, 01 minutes, and 234 seconds, which would be the same thing as 50 degrees, 4 minutes and 54 seconds?
aaron Harvey on 7 Mar 2016
sorry i should have specified this. Its actually deg and decimal , so 50.01.234 would be 50degrees and 01.234 minutes. i would like to be able to take them from the array of cells eventually to be able to plot the points on a grid map

KSSV on 7 Mar 2016
k = {'1' ; '3' ; '4' ; '7' ; '10'} ; % be your cell array
N = length(k) ; % gives number of elements in cell array
lon = zeros(N,1) ; % Initialize the lon array
for i = 1:length(k) % Loop for every element
lon(i) = str2num(k{i}) ; % combert sring/ char to number
end
aaron Harvey on 7 Mar 2016
I'm affraid this hasn't worked, it handles numbers such as your example fine but it does not handle the second decimal point well such as 50.01.234

Jan on 7 Mar 2016
Are you sure that you get 50 deg, 1.234 min and not 50 deg 1 min 234 sec (while the last value is a typo only)?
Data = {'50.01.234'; '60.06.345'};
Str = sprintf('%s#'m Data{:});
Value = sscanf(Str, '%i.%f#', [2, numel(Data)]);
Deg = Value(1, :) + Value(2, :) / 60;

Walter Roberson on 7 Mar 2016
paired_numeric = str2double( regexp(TheCellArray(:), '\.', 'split', 'once') );
degrees = paired_numeric(:,1) + paired_numeric(:,2) / 60;