This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.


Convert degrees to degrees-minutes-seconds


DMS = degrees2dms(angleInDegrees)


DMS = degrees2dms(angleInDegrees) converts angles from values in degrees which may include a fractional part (sometimes called “decimal degrees”) to degree-minutes-seconds representation. The input should be a real-valued column vector. Given N-by-1 input, DMS will be N-by-3, with one row per input angle. The first column of DMS contains the “degrees” element and is integer-valued. The second column contains the “minutes” element and is integer valued. The third column contains the “seconds” element, and can have a nonzero fractional part. In any given row of DMS, the sign of the first nonzero element indicates the sign of the overall angle. A positive number indicates north latitude or east longitude; a negative number indicates south latitude or west longitude. Any remaining elements in that row will have nonnegative values.


Convert four angles from values in degrees to degree-minutes-seconds representation.

format long g
angleInDegrees = [ 30.8457722555556; ...
                  -82.0444189583333; ...
                   -0.504756513888889; ...
dms = degrees2dms(angleInDegrees)

The output appears as follows:

dms =
                30                50          44.7801200001663
               -82                 2          39.9082499998644
                 0               -30          17.1234500000003
                 0                 0          14.8200000000012

Convert angles to a character array, with each angle on its own line.

nonnegative = all((dms >= 0),2);
hemisphere = repmat('N', size(nonnegative));
hemisphere(~nonnegative) = 'S';
absvalues = num2cell(abs(dms'));
values = [absvalues; num2cell(hemisphere')];
str = sprintf('%2.0fd%2.0fm%7.5fs%s\n', values{:})

The output appears as follows:

str =
    82d 2m39.90825sS
     0d 0m14.82000sN

Split the character array into cells as delimited by the newline character, then return to the original values using str2angle.

newline = sprintf('\n');
C = textscan(str,'%s',-1,'delimiter',newline);
a = deal(C{:});
for k = 1:numel(a)

The output appears as follows:

ans =

ans =

ans =

ans =

Introduced in R2007a

Was this topic helpful?