起因是需要将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文件详解相关推荐

  1. Qt 读取XML文档的简单示例

    目录名字 XML简介 Qt 操作XML文档一般方法 使用DOM读取XML文档 示例代码:读取XML文档 XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种 ...

  2. 【Qt】DOM读取XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. XML文档示例 04. DOM读取XML文档内容 05. 预留 06. 附录 01. 概述 DOM(Document Ob ...

  3. [Qt教程] 第27篇 XML(一)使用DOM读取XML文档

    [Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主  发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...

  4. C#来创建和读取XML文档 [转]

    C#来创建和读取XML文档  [关键词]:XML 录入:小鱼之家 来源:http://fisher.xundain.com 时间:2005-3-3 23:41:54 点击:85次 扩展标记语言XML( ...

  5. 读取XML文档解析信息

    dom4j是一个Java的XML API,用来读写XML文件.dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.使用dom4j ...

  6. C#来创建和读取XML文档

    扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的.做为用于替代HTML语言的一种新型的标记语言, XML内部有着很多基本标准,XML就是通过与这些相关标 ...

  7. ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...

    墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门.索引管理.映射详解,本文详细介绍ElasticSearch的索引别名.分词器.文档管理.路由.搜索详解. 一.索引别名 1. ...

  8. 在HTML文档中使用JavaScript的方法详解

    在HTML文档中使用JavaScript的方法详解 本文详细介绍,在HTML文档(也称为HTML页面或网页)中使用JavaScript脚本代码的多种方法. 假设要用JS生成字符☆直角三角形 实现Jav ...

  9. 用C#读取XML文档

    本文将以一个非常简单的例子来说明如何使用C#访问一个XML文件并且读取其中的信息.例子本身并无任何实际意义,它只是简单的介绍了如何调用微软的XML标准以及如何运用到实际当中去.希望能够对初次接触C#或 ...

最新文章

  1. 远场语音识别,性能提升 30%,百度怎么做到的?
  2. Forefront Client Security部署前准备
  3. 好污!杜蕾斯:一份2017年度账单和床上总结求认领...
  4. 兴义高考八中2021成绩查询,兴义第八中学2021年录取分数线
  5. MS SQL巡检系列mdash;mdash;检查重复索引
  6. js javascript UTF-8 GB2312编码转换
  7. mysql 内存占用过多的解决方法
  8. [react] 说说你是怎么理解react的业务组件和技术组件的?
  9. 多角度分析,通讯时序数据的预测与异常检测挑战
  10. Eclipse中使用JNI编写C代码时出现“Unresolved inclusion: ***.h”的解决方案
  11. 如何做好大型数据中心的运维
  12. FZU 1054 阅读顺序
  13. as ssd测试软件得分分析,SSD性能评判:教你读懂利用AS SSD BenchMark测试SSD固态硬盘性能的参数-网络教程与技术 -亦是美网络...
  14. stm32c8t6之跑马灯程序配置
  15. python自动化办公(五)实现将读取的excel数据写到word指定的地方:示例(劳动合同)
  16. 假如时光倒流,我会这么学习Java 【转载】
  17. 2021-02-09 MATLAB 中计算 阶乘的函数
  18. 几种码农使用的等宽字体比较——让自己的眼睛爽起来!
  19. html5图片任何改不透明度,如何巧改插入图片的透明度
  20. 利用空间分析进行学校选址

热门文章

  1. springboot使用多线程处理高并发接口
  2. csdn涨粉技巧篇,都是干货涨粉知识,不花钱的
  3. 激光slam课程学习笔记--第2课:2D激光slam
  4. Katalon Studio Enterprise 8.5 Crack-New
  5. 关于一点coding.net与git配合在AndroidStudio/Idea上的使用笔记个的
  6. 使用cmd命令进入某一文件夹
  7. 微信小程序聊天 表情
  8. memcache部署安装
  9. HTTPS简介及加密过程
  10. 几种垃圾收集器对比及使用场景