度分秒与度数相互转换的Matlab函数

本文介绍了如何在Matlab中编写两个实用函数:dms2d用于将度分秒格式转换为度数,以及d2dms用于将度数转换回度分秒。通过示例展示了如何使用这两个函数处理深圳经纬度数据,便于度数格式间的灵活转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

在数学中,表示角度的度、分、秒分别使用°符号进行表示。
1°=60′,1′=60″ ,1°=3600″。
在表示经纬度时,常常会用到度数和度分秒两种表示方法,例如深圳的经纬度为北纬N22°32′43.86″, 东经E114°03′10.40″。用度数表示则是北纬N22.54551667°,东经E114.05288889°
这里我们利用Matlab,给出了两种格式相互转换的函数。

度分秒转换为度数的函数

function degrees = dms2d(degree,minute,second,varargin)

% degree, minute and second to degrees
% e.g., degrees = dms2d(22, 32, 43.86)
% 'sd' is used to specify the number of decimal places
% e.g., degrees = dms2d(114, 05, 52.35, 'sd', 5)
% Yuechu Wu
% 12131066@mail.sustech.edu.cn
% 2022-09-13
% updated default parameter sd = 8
% 2023-03-06, Yuechu Wu

% significant digits after decimal point, default = 8
p = inputParser;
addParameter(p,'sd',8);
parse(p,varargin{:});
sd = p.Results.sd;


degrees = degree + minute/60 + second/3600;
degrees = vpa(degrees, sd+length(num2str(degree)));

return

如果需要设置有效小数位数,可以指定函数中的sd的值。
利用这个函数,我们可以将深圳的经纬度换算成度数的格式:

>> degrees = dms2d(22, 32, 43.86)
 
degrees =
 
22.54551667
 
>> degrees = dms2d(114,03,10.40,'sd',5)
 
degrees =
 
114.05289

度数转换为度分秒的函数

function [degree, minute, second] = d2dms(degrees,varargin)

% degrees to degree, minute and second
% e.g., [degree, minute, second] = d2dms(22.54551667)
% 'sd' is used to specify the number of decimal places of second
% e.g., [degree, minute, second] = d2dms(114.097875,'sd',3)
% Yuechu Wu
% 12131066@mail.sustech.edu.cn
% 2022-09-13
% updated default parameter sd = 2
% 2023-03-06, Yuechu Wu

% significant digits after decimal point, default = 2
p = inputParser;
addParameter(p,'sd',2);
parse(p,varargin{:});
sd = p.Results.sd;

degree = fix(degrees);
minute = fix((degrees - degree) * 60);
second_int = fix((degrees - degree - minute/60)*3600);
second = (degrees - degree - minute/60)*3600;
second = vpa(second, sd+length(num2str(second_int)));

return

同样地,我们可以将度数转换为度分秒:
如果需要改变秒的小数位数,可以指定函数中的sd的值。

>> [degree, minute, second] = d2dms(22.54551667,'sd',5)

degree =

    22


minute =

    32

 
second =
 
43.86001

>> [degree, minute, second] = d2dms(114.05288889)

degree =

   114


minute =

     3

 
second =
 
10.4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值