作业帮 > 数学 > 作业

matlab distance不是用来求距离的么?

来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/12 15:14:05
matlab distance不是用来求距离的么?
>> test1=[0,0];test2=[1,1];distance(test1,test2)

ans =

    1.4142

>> distance([0,0],[3,4])

ans =

    4.9985

>> distance([63,443],[117,263])
Error using atan2
Inputs must be real.

Error in distance>greatcircledist (line 160)
rng = r * 2 * atan2(sqrt(a),sqrt(1 - a));

Error in distance (line 101)
    rng = greatcircledist(lat1,lon1,lat2,lon2,ellipsoid(1));



书读少,勿骗Σ( ° △ °|||)︴
matlab distance不是用来求距离的么?
distance函数原来是设计来计算球面上距离的
输入的不是平面坐标x,y
而是经纬坐标,经度,纬度的度数
返回的也不是两点的距离
而是两点在球面上,大圆上弧长对应的角度
只是当角度很小的时候,圆面近似于平面,角度也近似于和长度成比例
所以你用 [0 0] [1 1]去测试返回接近根号2的值而用[0 0][3 4] 去测试返回接近5的值
但是已经有相当大的误差了
当角度越大时,这个误差就越大
又经纬度的范围是-180~180 -90~90,输入的数范围超过时就有可能计算出错
matlab没有定义求两点距离的函数,不过可以坐一下变换自己求出来
例如两点[63 443]和[117 263]
他么之间的距离可以先计算他们向量差,在计算各分量的平方和的开方
sqrt(sum(([63 443]-[117 263]).^2))
ans =
187.9255