python实现简单的三边测量定位
定位原理很简单,故不赘述,直接上源码,内附注释。(如果对您的学习有所帮助,还请帮忙点个赞,谢谢了)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 16 10:50:29 2018@author: dag
"""
import sympy
import numpy as np
import math
from matplotlib.pyplot import plot
from matplotlib.pyplot import show
import matplotlib.pyplot as plt
import matplotlib
#解决无法显示中文问题,fname是加载字体路径,根据自身pc实际确定,具体请百度
zhfont1 = matplotlib.font_manager.FontProperties(fname='/System/Library/Fonts/Hiragino Sans GB W3.ttc')#随机产生3个参考节点坐标
maxy = 1000
maxx = 1000
cx = maxx*np.random.rand(3)
cy = maxy*np.random.rand(3)
dot1 = plot(cx,cy,'k^')#生成盲节点,以及其与参考节点欧式距离
mtx = maxx*np.random.rand()
mty = maxy*np.random.rand()
plt.hold('on')
dot2 = plot(mtx,mty,'go')
da = math.sqrt(np.square(mtx-cx[0])+np.square(mty-cy[0]))
db = math.sqrt(np.square(mtx-cx[1])+np.square(mty-cy[1]))
dc = math.sqrt(np.square(mtx-cx[2])+np.square(mty-cy[2]))#计算定位坐标
def triposition(xa,ya,da,xb,yb,db,xc,yc,dc): x,y = sympy.symbols('x y')f1 = 2*x*(xa-xc)+np.square(xc)-np.square(xa)+2*y*(ya-yc)+np.square(yc)-np.square(ya)-(np.square(dc)-np.square(da))f2 = 2*x*(xb-xc)+np.square(xc)-np.square(xb)+2*y*(yb-yc)+np.square(yc)-np.square(yb)-(np.square(dc)-np.square(db))result = sympy.solve([f1,f2],[x,y])locx,locy = result[x],result[y]return [locx,locy]#解算得到定位节点坐标
[locx,locy] = triposition(cx[0],cy[0],da,cx[1],cy[1],db,cx[2],cy[2],dc)
plt.hold('on')
dot3 = plot(locx,locy,'r*')#显示脚注
x = [[locx,cx[0]],[locx,cx[1]],[locx,cx[2]]]
y = [[locy,cy[0]],[locy,cy[1]],[locy,cy[2]]]
for i in range(len(x)):plt.plot(x[i],y[i],linestyle = '--',color ='g' )
plt.title('三边测量法的定位',fontproperties=zhfont1)
plt.legend(['参考节点','盲节点','定位节点'], loc='lower right',prop=zhfont1)
show()
derror = math.sqrt(np.square(locx-mtx) + np.square(locy-mty))
print(derror)
输出效果图:
python实现简单的三边测量定位相关推荐
- Python 实现简单的爬虫
Python 是一种跨平台的计算机程序设计语言,面向对象动态类型语言,Python是纯粹的自由软件,源代码和解释器cpython遵循 GPL(GNU General Public License)协议 ...
- python服务端语言_使用Python实现简单的服务器功能
socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者Java来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apach ...
- python程序-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- python中xpath定位_xpath最新:关于python中的xpath解析定位_爱安网 LoveAn.com
关于"xpath"的最新内容 聚合阅读 这篇文章主要介绍了关于python中的xpath解析定位,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章主要 ...
- Python的简单介绍
1.Python起源与定义 Python 是由荷兰人吉多·罗萨姆于 1989 年发布的.Python 的第一个公开发行版发行于 1991 年.Python 的官方定义:Python 是一种解释型的.面 ...
- python的简单爬取代码之小白教程(微博热门标题)
python的简单爬取代码之小白教程(微博热门标题) 一.请求网站响应获取网页源代码 1.观察微博搜索热搜榜 2.准备工作 3.上代码 二.利用正则定位到每个热搜 1.查看源码 2.使用正则直接定位 ...
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- python写软件实例-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- 基于python与matlab的TOA定位算法性能仿真
基于python与matlab的TOA定位算法性能仿真 仿真要求 仿真方案的设计 matlab仿真代码 python仿真代码 仿真结果 仿真要求 要求一:编写两个函数TOA_LLOP和TOA_CHAN ...
- python实现简单的情感分析
python实现简单的情感分析 1 数据导入及预处理 1.1 数据导入 # 数据导入 import pandas as pd data = pd.read_csv('../data/京东评论数据.cs ...
最新文章
- activexobject java_JS进阶篇--IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展...
- 新手学习单片机最常见的六大误区,你进坑了吗?
- Java中的多线程你只要看这一篇就够了
- mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)
- 关于Increased rates of convergence through learning rate adaptation一文的理解
- 应用上下文webApplicationContext
- fun(n) Java_java程序员的kotlin课(N+2):suspending函数执行编排
- Bootstrap中过渡效果(Transition)模态框插件的使用案例
- linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz
- CVPR2021论文集锦 | CVPR2021最新论文 | CVPR2021审稿结果 | CVPR2021录取结果
- 原python最简单的图形编程_Python(简单图形和文件处理)编程
- 数据库mysql:MySQL软件安装
- [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute
- Mybatis学习(2)—— 对象关系映射
- Microsoft visual FoxPro使用教程--添加csv文件数据到dbf文件中
- Android -Recovery
- github项目下载单个文件夹的办法
- matlab--积分计算
- 规模决定利润 网吧规模扩充升级参考方案(转)
- C语言文件操作函数总结——超详细