Convert cell array of latitudes to array

1 次查看(过去 30 天)
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?
  2 个评论
Walter Roberson
Walter Roberson 2016-3-7
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
aaron Harvey 2016-3-7
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

请先登录,再进行评论。

回答(3 个)

KSSV
KSSV 2016-3-7
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
  1 个评论
aaron Harvey
aaron Harvey 2016-3-7
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
Jan 2016-3-7
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
Walter Roberson 2016-3-7
paired_numeric = str2double( regexp(TheCellArray(:), '\.', 'split', 'once') );
degrees = paired_numeric(:,1) + paired_numeric(:,2) / 60;

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by