matlab读取xml文档并储存为.mat文件详解
起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递。
xml文档结构如下:
<opencv_storage><slope_x type_id="opencv-matrix"><rows>1500</rows><cols>1500</cols><dt>f</dt><data>...</data></slope_x><slope_y type_id="opencv-matrix"><rows>1500</rows><cols>1500</cols><dt>f</dt><data>...</data></slope_y></opencv_storage>
其中data中为用科学记数法保留的float型变量。
使用MATLAB内置的xmlread函数读取XML文件,然后将数据保存到MAT文件中。matlab读取xml的代码如下:
% 读取XML文件doc = xmlread('example.xml');% 获取所有的slope_x和slope_y节点slope_x_nodes = doc.getElementsByTagName('slope_x');slope_y_nodes = doc.getElementsByTagName('slope_y');% 获取节点的rows和colsrows = str2double(slope_x_nodes.item(0).getElementsByTagName('rows').item(0).getTextContent());cols = str2double(slope_x_nodes.item(0).getElementsByTagName('cols').item(0).getTextContent());% 读取slope_x的数据data_node = slope_x_nodes.item(0).getElementsByTagName('data').item(0);data_str = char(data_node.getTextContent());data_arr = sscanf(data_str, '%e');slope_x = reshape(data_arr, [cols, rows])';% 读取slope_y的数据data_node = slope_y_nodes.item(0).getElementsByTagName('data').item(0);data_str = char(data_node.getTextContent());data_arr = sscanf(data_str, '%e');slope_y = reshape(data_arr, [cols, rows])';% 将数据保存到MAT文件中save('example.mat', 'slope_x', 'slope_y');
解释:
1. 首先使用xmlread函数读取XML文件example.xml的内容,将其存储在doc变量中。
2. 通过doc对象的getElementsByTagName方法获取所有的slope_x和slope_y节点,并分别存储在slope_x_nodes和slope_y_nodes变量中。
3. 通过slope_x_nodes.item(0)获取第一个slope_x节点,然后通过getElementsByTagName方法获取其子节点rows和cols,并使用getTextContent方法获取其文本内容,最后使用str2double函数将其转换为数值类型并存储在rows和cols变量中。
4. 通过slope_x_nodes.item(0)获取第一个slope_x节点,然后通过getElementsByTagName方法获取其子节点data,使用getTextContent方法获取其文本内容并存储在data_str变量中。然后使用sscanf函数将其转换为数值类型并存储在data_arr变量中。最后使用reshape函数将data_arr变换为cols行rows列的矩阵,并使用'转置运算符将其转置,最终存储在slope_x变量中。
5. 通过slope_y_nodes.item(0)获取第一个slope_y节点,然后按照与步骤4相同的方式读取其数据并存储在slope_y变量中。
6. 最后使用save函数将slope_x和slope_y变量保存到MAT文件example.mat中。
matlab读取xml文档并储存为.mat文件详解相关推荐
- Qt 读取XML文档的简单示例
目录名字 XML简介 Qt 操作XML文档一般方法 使用DOM读取XML文档 示例代码:读取XML文档 XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种 ...
- 【Qt】DOM读取XML文档
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. XML文档示例 04. DOM读取XML文档内容 05. 预留 06. 附录 01. 概述 DOM(Document Ob ...
- [Qt教程] 第27篇 XML(一)使用DOM读取XML文档
[Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主 发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...
- C#来创建和读取XML文档 [转]
C#来创建和读取XML文档 [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...
- 读取XML文档解析信息
dom4j是一个Java的XML API,用来读写XML文件.dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.使用dom4j ...
- C#来创建和读取XML文档
扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的.做为用于替代HTML语言的一种新型的标记语言, XML内部有着很多基本标准,XML就是通过与这些相关标 ...
- ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...
墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门.索引管理.映射详解,本文详细介绍ElasticSearch的索引别名.分词器.文档管理.路由.搜索详解. 一.索引别名 1. ...
- 在HTML文档中使用JavaScript的方法详解
在HTML文档中使用JavaScript的方法详解 本文详细介绍,在HTML文档(也称为HTML页面或网页)中使用JavaScript脚本代码的多种方法. 假设要用JS生成字符☆直角三角形 实现Jav ...
- 用C#读取XML文档
本文将以一个非常简单的例子来说明如何使用C#访问一个XML文件并且读取其中的信息.例子本身并无任何实际意义,它只是简单的介绍了如何调用微软的XML标准以及如何运用到实际当中去.希望能够对初次接触C#或 ...
最新文章
- 远场语音识别,性能提升 30%,百度怎么做到的?
- Forefront Client Security部署前准备
- 好污!杜蕾斯:一份2017年度账单和床上总结求认领...
- 兴义高考八中2021成绩查询,兴义第八中学2021年录取分数线
- MS SQL巡检系列mdash;mdash;检查重复索引
- js javascript UTF-8 GB2312编码转换
- mysql 内存占用过多的解决方法
- [react] 说说你是怎么理解react的业务组件和技术组件的?
- 多角度分析,通讯时序数据的预测与异常检测挑战
- Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: ***.h”的解决方案
- 如何做好大型数据中心的运维
- FZU 1054 阅读顺序
- as ssd测试软件得分分析,SSD性能评判:教你读懂利用AS SSD BenchMark测试SSD固态硬盘性能的参数-网络教程与技术
-亦是美网络...
- stm32c8t6之跑马灯程序配置
- python自动化办公(五)实现将读取的excel数据写到word指定的地方:示例(劳动合同)
- 假如时光倒流,我会这么学习Java 【转载】
- 2021-02-09 MATLAB 中计算 阶乘的函数
- 几种码农使用的等宽字体比较——让自己的眼睛爽起来!
- html5图片任何改不透明度,如何巧改插入图片的透明度
- 利用空间分析进行学校选址