这总是很有趣:)

首先:Mohsen Nosratinia的回答是好的,只要

您不需要知道实际距离

你可以绝对肯定地保证你永远不会去极地附近

并且永远不会接近±180°子午线

对于给定的纬度,-180°和180°经度实际上是相同的点,因此仅仅观察角度之间的差异是不够的 . 这在极地地区将是一个更大的问题,因为那里的大的经度差异对实际距离的影响较小 .

球面坐标对于导航,绘图和类似的东西非常有用和实用 . 然而,对于空间计算,就像您尝试计算的表面距离一样,球面坐标实际上非常麻烦 .

虽然可以直接使用角度进行这样的计算,但我个人并不认为它非常实用:你经常需要具备球形三角学的强大背景,并且有很多经验可以知道它的许多缺陷 - 通常存在不稳定性或"special points"你需要解决(例如,极点),因为你引入的触发函数等需要考虑的象限模糊度等 .

我已经学会了在大学里完成所有这些工作,但我也了解到球形触发方法通常会引入复杂性,从数学角度讲并不是严格要求的,换句话说,球形触发是最基本问题的最简单表示 .

例如,如果将纬度和经度转换为3D笛卡尔 X,Y,Z 坐标,然后通过简单公式找到距离,则距离问题非常微不足道

距离(a,b)= R·arccos(a / | a |·b / | b |)

其中 a 和 b 是球体上的两个这样的笛卡尔向量 . 请注意| a | = | b | = R ,地球半径为 R = 6371 .

在MATLAB代码中:

% Some example coordinates (degrees are assumed)

lon = 360*rand(2030, 1354);

lat = 180*rand(2030, 1354) - 90;

% Your point of interest

P = [4, 54];

% Radius of Earth

RE = 6371;

% Convert the array of lat/lon coordinates to Cartesian vectors

% NOTE: sph2cart expects radians

% NOTE: use radius 1, so we don't have to normalize the vectors

[X,Y,Z] = sph2cart( lon*pi/180, lat*pi/180, 1);

% Same for your point of interest

[xP,yP,zP] = sph2cart(P(1)*pi/180, P(2)*pi/180, 1);

% The minimum distance, and the linear index where that distance was found

% NOTE: force the dot product into the interval [-1 +1]. This prevents

% slight overshoots due to numerical artifacts

dotProd = xP*X(:) + yP*Y(:) + zP*Z(:);

[minDist, index] = min( RE*acos( min(max(-1,dotProd),1) ) );

% Convert that linear index to 2D subscripts

[ii,jj] = ind2sub(size(lon), index)

如果你坚持将转换转换为笛卡尔并直接使用lat / lon,则必须使用Haversine公式,例如on this website,这也是 distance() 从映射工具箱中使用的方法 .

现在,所有这一切对整个地球都有效,你发现光滑的球形地球足够精确近似 . 如果你想要包括地球的扁率或一些更高阶的形状模型(或上帝禁止,包括地形在内的距离),你需要做更复杂的事情 . 但我认为这不是你的目标:)

PS - 我不会感到惊讶,如果你能写出我所做的一切,你可能会重新发现Haversine公式 . 我只是喜欢能够计算一些简单的东西,就像单独从第一原理开始沿着球体的距离,而不是从很久以前植入脑中的一些黑盒子公式:)

matlab找距离最近的元素,如何用MATLAB找到给定坐标的最近点?相关推荐

  1. matlab求分段函数的值.,如何用MATLAB求分段函数的最小值和最大值?

    7.1.1 分段线性插值 所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理.实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数interp1其主要 ...

  2. matlab引用数据,excel引用数据-如何用matlab处理excel文件中的数据?

    如何利用matlab根据excel表格里面的数据画图 将待导入的矩阵结数据Excel中,录入时注意行列原矩阵一一对应 录入完以后数据,为了后续步骤使用方便,命名时我们最好把它命名为我们接下来在MATL ...

  3. matlab鼠标三维坐标点,请问如何用matlab画三维点,已知x,y,z的坐标,在三维坐标系上显示...

    点击查看请问如何用matlab画三维点,已知x,y,z的坐标,在三维坐标系上显示具体信息 答:例如 : X=1,Y=2,Z=3; 代码就是: plot3(1,2,3,'*') grid on%加网格 ...

  4. matlab 图案 柱状图_值得收藏 | 如何用matlab做出酷炫的图像

    1.基础知识 1.1 二维图形绘制 plot函数是Matlab绘制二维图形的常用函数,该函数将数组中的数据点绘连起来构成一条连续的曲线. plot(x,y,'PropertyName',Propert ...

  5. matlab的GUI怎么嵌入图片,如何用matlab在GUI中显示一张图片

    满意答案 nucynucy 2013.06.17 采纳率:47%    等级:12 已帮助:10834人 建一个axes 在建一个按钮比如push button,就可以实现按钮函数的话比如: % -- ...

  6. matlab画y等于x平方,如何用matlab画Y=X^2的图啊?

    代码如下:[a,b]=solve('y=x^zd2','y=2*x+3')%求两条曲线的共同点的坐标,内即方程组的解:a为x,b为ysyms x;y1=x^2;ezplot(y1);y2=2*x+3; ...

  7. matlab可以画3d图吗,如何用matlab画3d图

    MATLAB三维绘图解读_自考_成人教育_教育专区.MATLAB 上次课内容回顾 1. 2. ? ? ? 3. 4. 5. MATLAB二维绘图 离散函数和数据的可视化; 二维曲线和图形 plot.. ...

  8. matlab可以拟合分段函数吗,如何用matlab拟合出分段函数

    你要知道,你要拟合的是一个分段函数,这本身就不是一般的连续光滑函数. nlinfit之所以要有初值这一项,就是考虑到在某些变态的情况下,无法找到最小二乘函数的最小值,可能是一个局部的最小值,也可能根本 ...

  9. matlab里面sin函数是角度,matlab-如何用matlab编写sin函数要求定义一 – 手机爱问

    2019-03-11 函数是什么? 三.函数的定义 定义 设 与 是某一过程中的两个变量,如果当变量 在变化范围 中任取一个数值时,变量 按照一定的对应规则,总有确定的数值和它相对应,则称变量 为变量 ...

最新文章

  1. C# MBG 扩展方法类库 分享
  2. JSON API免费接口
  3. 安卓自动化测试——rf
  4. last modified php,lastModified属性_用法示例-javascript词典-js编程词典-php中文网
  5. 看风水用什么罗盘最好_兰花用什么花盆栽植最好?
  6. 魔改部署自己专属的合成大西瓜(三:上线篇<踩坑篇>)
  7. Ubuntu下PHP开发环境LAMP搭建
  8. centos安装tree命令
  9. 做H5页面用什么软件比较好?
  10. python手工打码_python云打码
  11. 滴滴征战澳洲 全球“追击”优步
  12. 基于STM32F103C8T6的充电桩计费系统(程序+原理图+PCB+论文)
  13. 蚂蚁算法python_Python编程实现蚁群算法详解
  14. 纯硬件分立式数字电子钟proteus仿真(数电课设,含时间显示、校准、整点报时、闹钟功能)
  15. 输出 2~n之间所有素数,并求和,n由键盘输入。素数是只能被1和自身整除的整数。要求编写函数判断自然数x是否为素数
  16. C语言用函数求圆的面积和周长,用C语言:编写两个函数,分别计算圆的面积和周长,要求在主函数中输入半径,调用函数进行计算,主函数中...
  17. RISC-V 和 Cortex-M 的异同
  18. 从G1到G16 HTC Android帝国超级大盘点
  19. iconmobileu驱动设置教_电脑突然断网,连接不上网络怎么办?教你3种方法找回网络...
  20. js创建一个指定长度的数组

热门文章

  1. Proactor 与 Reactor
  2. 生产计划管理制造系统模块化
  3. springboot开发简单的web应用前篇
  4. python基础整理——关于进制输出初探
  5. 使用haproxy做负载均衡时保持客户端真实的IP
  6. JSP:src路径里有中文,产生乱码问题
  7. android源码编译jar,在android源码编译中导入第三方jar包
  8. jmeter判断值是否相等_jmeter beanshell判断响应的json值是否正确;
  9. java文件下载用什么技术_Java中实现文件上传下载的三种解决方案(推荐)
  10. su切换到oracle后怎么退出,linux下启动oralce和关闭oracle以及数据库实例化