使用MATLAB对地铁站、公交站等求解最短路径

使用MATLAB对城市的地铁站、公交站等站点,根据站点的经纬度坐标和彼此之间的权重,求解其最短路径、途径站点和路程

  1. 已知的数据如图,是西安市地铁站点的数据,保存在一个Excel里
    在这里插入图片描述
    如图,每列的内容都在上面,不过往MATLAB中导入数据时,不需要第一行的文字内容,MATLAB不能读取汉字,直接把所有汉字都删除,记住每一列数字的意义就行。

2.MATLAB代码很简单,主要是进行Excel中的处理。
西安市站点一共有117个,本次数据一共有1219条,所以数据中的站点需要转换成数字进行替代。所有的站点用1~117的数字进行代替,相同的站点要用相同的数字代替。

3.在Excel中新建一个sheet,把A列站点粘到A1位置,然后把B列终点站点也复制,粘到新建的sheet A列下面,在本组数据中,就是粘到A1220位置往下。
粘贴完成后,在新建sheet A列中,数据一共有1219*2=2438个数据。
主要是因为上图中的A列或B列并没有完全包含117个站点,只用一列数据去重复会存在少点的问题。
使用上述相同的粘贴方法,把C列起点经度和D列终点纬度,粘到新建sheet的B列和C列,然后把上图中E列终点经度和F列终点纬度,粘到新建sheetB列和C列的1220格,续上粘贴。

先这么粘到一个新sheet中
再这么向下续着粘贴,记得粘完了把所有的中文都删除,MATLAB不能运行中文

4.然后在新建sheet中,选中A列全部站名,点击 “数据”——“删除重复值”
在这里插入图片描述

选择拓展选定区域,会自动把重复的地铁站名删除,连带着重复的地铁经纬度坐标也会留下唯一的。
这个时候注意检查,地铁站数量是不是117个,同时对应着117个经纬度坐标。

5.这会儿是117个地铁站名和对应的经纬度坐标。
使用Excel的排序功能,对地铁站进行字母排序,顺便带着经纬度也会调整。
这一步不是必须,但是排序后会更明了
在这里插入图片描述

6.把排序后的117个地铁站复制,在原始数据的sheet中,左边新增3列空白。如图所示,117个地铁站复制到A列,B列用自然数赋值,1 2 3这样拖到117,对应每一个地铁站。然后C列用VLOOKUP命令,如图所示,这样就给每一个地铁站名赋了一个数字,就是对应的1~117的数字。
=VLOOKUP(A2, $A 2 : 2: 2:B$117, 2, FALSE)
截图中因为有第一行的文字,所以是118,本身公式应该是117
这就是命令,等于赋值了
注意这里面是D列
注意这里面是E列
把这个vlookup的命令拖满整列,就可以看到整个起点终点都对应成了数字。

7.把现在站名变成数字的数据表导入到MATLAB中,导入时候需要选择向量形式,然后每组数据导入后的命名如下:
在这里插入图片描述
在这里插入图片描述
8.回到步骤5中,站点按照首字母顺序排列的那个sheet,这时候的站点按照首字母顺序进行排列,对应着经纬度坐标。
把这两列经纬度坐标也导入MATLAB,分别命名为x和y
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后所有导入的数据如图所示

9.代码运算比较简单,直接按照MATLAB帮助文档中,“根据节点坐标寻找最短路径”的代码进行计算得到。
具体网址:https://ww2.mathworks.cn/help/matlab/ref/graph.shortestpath.html;jsessionid=b2088ade3cc29383eb196d1e336d?s_tid=srchtitle#mw_ecf88b43-d1b1-4cac-b526-e8a40dbe533d
在这里插入图片描述

clc
clear all
close all

load("matlab.mat")

G = graph(S,T);    
%直接按照MATLAB帮助文档中的“根据节点坐标寻找最短路径”的代码进行计算得到
figure
plot(G,'XData',x,'YData',y)
hold on
scatter(x,y,"red","filled");     %画出起点,散点,红色,实心


for i=1:117                                    %这里面是因为地铁站数量只有117个,需要根据站点数量进行调整这个数字
    for j=1:117                                %这里面是因为地铁站数量只有117个,需要根据站点数量进行调整这个数字
   [path,len] = shortestpath(G,i,j);           %%直接按照MATLAB帮助文档中的“根据节点坐标寻找最短路径”的代码
   allPaths{i, j} = path; % 存储路径           %所有地铁站之间两两的途径站点
   allLens(i, j) = len; % 存储长度             %所有地铁站之间两两的路程长度
    end
end

代码非常简单,前半段是画图,后半段是把117个车站两两之间的路径和路程长度。

在这里插入图片描述
生成的图如上所示
在这里插入图片描述
在这里插入图片描述
allpaths和alllens可以看到都是矩阵,可以得到每两个车站间的最短路径和对应的路程长度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/703670.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

smart_rtmpd 的后台管理

高效的流媒体服务器 smart_rtmpd,您值得拥有 smart_rtmpd 的下载地址 https://github.com/superconvert/smart_rtmpd smart_rtmpd 的管理后台 https://github.com/superconvert/smart_rtmpd/edit/master/web%20manager/src/README.md web 管理后台说明 web 管理…

鹏城实验室PCLmed团队荣获ImageCLEFmedical 2024冠军,实现医疗图像解读新突破

在近期举行的ImageCLEFmedical 2024全球医疗图像分析和文本生成竞赛中,鹏城实验室专注于医学模型研究的PCLmed团队凭借卓越的技术实力和创新的解决方案,从来自世界各地的61支参赛队伍中脱颖而出,斩获冠军殊荣。这一成就不仅彰显了团队在医疗图…

树结构的实现

树的概念 树是一种非线性的数据结构,它是由n个有限节点组成一个具有层次关系的集合,它看起来像棵树,所以称其为“树”。如下图: 树可以分为根和子树,而子树又可以被分为根和子树,故我们可以用递归对其进行实…

基恩士LT-X8000A的IP地址

在这里插入图片描述 192.168.0.256 192.168.0.1 LT-X8000A

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay

Button按钮类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 按钮是GUI界面中应用最为广泛的控件,它常用于捕获用户生成的单击事件,其最明显的用途是触发绑定到一个处理函数。 wxPython类…

180.二叉树:二叉搜索树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

MFC上下文菜单与定时器学习笔记

本博文简单介绍了上下文菜单以及定时器的知识内容,作为笔记发表在csdn上面。 在这里插入图片描述 菜单资源的使用 添加菜单资源加载菜单资源: 注册窗口类时设置菜单创建窗口传参设置菜单在主窗口WM_CREATE消息中利用SetMenu函数设置 加载菜单资…

Python学习笔记6:pychram相关知识及安装教程,后续需要学习的入门知识

上篇文章说了,今天去公司重新装一下IDE,最后也是把过程这边再记录一下,有需要的可以参考一下。 关于pychram pychram是什么? PyCharm是由JetBrains公司开发的一款流行的Python集成开发环境(IDE)。它专为…

RAM IP核配置

REVIEW 之前已经学习过: ROM:FPGA寄存器 Vivado IP核-CSDN博客 串口接收:Vivado 串口接收优化-CSDN博客 1. 今日摸鱼计划 RAM创建与测试 小梅哥视频: 21C_嵌入式块存储器RAM介绍_哔哩哔哩_bilibili 21D_嵌入式块存储器RAM实现和仿真_哔哩…

wordpress旅游网站模板

旅行社wordpress主题 简洁实用的旅行社wordpress主题,适用于旅行社建网站的wordpress主题模板。 https://www.jianzhanpress.com/?p4296 旅游WordPress主题 简洁实用的旅游WordPress主题,适合做旅游公司网站的WordPress主题模板。 https://www.jian…

网络故障排除:保持网络稳定与业务连续

目录 什么是网络故障? 网络故障排除的基本步骤 1. 问题识别 2. 确定故障范围 3. 检查物理连接 4. 检查设备配置 5. 测试与诊断 6. 实施解决方案 7. 验证与监控 了解更多 在现代企业中,网络的稳定性和性能直接影响业务的连续性和效率。作为一名…

上岸北科大计算机专业难度有多大?北京科技大学计算机考研考情分析!

北京科技大学计算机与通信工程学院源于1973年成立的计算机及应用专业,经过近40年的建设,学院在学科建设、科学研究水平和教育教学质量上实现了跨越式的发展与大力提升。学院目前设有计算机科学与技术系、软件工程系、通信工程系、物联网与电子工程系、信…

项目文件预览

在实际项目开发过程,项目使用数据存在多种形式,“文件”也是一种常见形式,因此,“文件预览”功能变成了常规需求。 kkFileView项目使用流行的spring boot搭建,易上手和部署。万能的文件预览开源项目,基本支…

知识图谱的应用---智慧外交

文章目录 智慧外交典型应用 智慧外交 智慧外交是指通过事件分析的手段,从历史、政治、经济、军事、文化等多个层面对各个国家的关系进行定量分析,提供智能化的外交关系研判和外交决策支撑。依托公开媒体、互联网及内部信息等海量资源数据,综合…

视频号小店常见问题全网最全的合集,赶紧收藏起来!

大家好,我是电商小V 新的电商项目视频号小店也是越来越火,想去操作的小伙伴也是越来越多,但是很多人对于这个项目本身不是很了解,咱们今天就来详细的说一下视频号小店,最关心的问题,一篇详解,建…

计算机组成原理(五)

一、链式查询方式 接口的优先级固定不变 在链式查询的情况下,设备的优先级通常与其在链中的位置有关。具体来说,越靠近查询链的起始位置的设备通常具有较高的优先级,而越靠近链的末尾位置的设备优先级较低。 优点: 简单实现&am…

12. ESP32-JSON(Arduino)

使用ESP32和Arduino框架处理JSON数据 在物联网(IoT)开发中,ESP32是一款功能强大的微控制器,它结合了Wi-Fi和蓝牙功能,适用于各种智能设备和传感器项目。JSON(JavaScript Object Notation)是一种…

StaticText文本类

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 创建完窗口以后,我们可以在窗口内添加一些控件,所谓的控件,就是经常使用的按钮、文本、输入框、单选框等。 于所…

AIOps实现的简单途径

AIOps需要大模型的支持,但是训练一个业务专用的大模型并不是一件理想的任务,所以利用开源的通用大模型才是王道。 我们可以利用AI大模型的理解能力来帮助分析和解释Kubernetes(K8s)的日志。通过提供日志中可能存在问题的部分&…