Documentation

This is machine translation

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

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

degrees2dms

Convert degrees to degrees-minutes-seconds

Syntax

DMS = degrees2dms(angleInDegrees)

Description

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.

Examples

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

format long g
angleInDegrees = [ 30.8457722555556; ...
                  -82.0444189583333; ...
                   -0.504756513888889; ...
                    0.004116666666667];
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 =
    30d50m44.78012sN
    82d 2m39.90825sS
     0d30m17.12345sS
     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)
    str2angle(a{k})
end

The output appears as follows:

ans =
          30.8457722555556

ans =
         -82.0444189583333

ans =
        -0.504756513888889

ans =
       0.00411666666666667

Introduced in R2007a

Was this topic helpful?