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 atan2Inputs must be real.Error in distance&g
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 12:59:12
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 atan2Inputs must be real.Error in distance&g
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不是用来求距离的么?>> 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 atan2Inputs must be real.Error in distance&g
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
你用的那个版本的?
我的电脑上没出错啊
两点直线距离 用pdist求具体参考help pdist