matlab函数distance函数,用函数distance求两地的距离

本文介绍了如何通过重写MATLAB的distance函数以提高计算大量地理位置间距离的效率。作者将原始函数分解并使用shortgeodesicdist代替,测试表明新方法在不同规模数据上的运行时间显著减少,且结果精度在1e-6以内。
摘要由CSDN通过智能技术生成

1 建议:

自己重写distance函数,matlab自带的函数由于考虑通用性,性能会较低。

2 我的做法:

将函数中的运算一步一步提取出来,最后,代码:

tic

clear;

% nfarms=3526;

nfarms = 1000;

disp(['nfarms is ',num2str(nfarms)]);

farmlati=(37+rand(nfarms,1))*(pi/180);

farmlongi=(-99+rand(nfarms,1))*(pi/180);

disfarmfarm=zeros(nfarms,nfarms);

ellipsoid = geoidtst(almanac('earth','ellipsoid'));

for i=1:1:nfarms

disfarmfarm(i,i+1:nfarms) = shortgeodesicdist(farmlati(i)*ones(length(i+1:nfarms),1), farmlongi(i)*ones(length(i+1:nfarms),1),farmlati(i+1:nfarms), farmlongi(i+1:nfarms),ellipsoid);

end

disfarm=disfarmfarm+disfarmfarm';

toc

3 运行时间

在我的电脑上运行消耗时间情况如下:

>> temp0521

nfarms is 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值