matlab读取xml文档并储存为.mat文件详解

这篇具有很好参考价值的文章主要介绍了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和cols

rows = 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中。文章来源地址https://www.toymoban.com/news/detail-513679.html

到了这里,关于matlab读取xml文档并储存为.mat文件详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python操作XML教程:读取、写入、修改和保存XML文档

    XML是一种常见的数据交换格式,在许多应用中都被广泛使用。通过掌握Python操作XML的基础知识,您将能够轻松地处理XML数据,从而实现数据的提取、修改和存储。 内容包括以下主要部分: 解析XML文档:学习如何使用Python解析XML文档,获取根元素和遍历子元素。 访问元素的内

    2024年02月13日
    浏览(47)
  • MATLAB 之 MAT 文件

    MAT 文件是 MATLAB 数据存储的默认文件格式,以双精度二进制格式保存数据。 MAT 文件为其他程序设计语言(如 C、C++、FORTRAN 等)使用 MATLAB 数据提供了一种共享机制。 MAT 文件由 128 字节的 MAT 文件头和尾随其后的数据单元组成。 文件头包括 MATLAB 版本、文件被创建的时间等信

    2024年02月08日
    浏览(49)
  • 使用c/c++语言写一个简单的学生信息管理系统(使用结构体数组,包含文件储存,文件读取等)

    使用c/c++开发的一个简单学生信息管理系统,功能如图所示: 选择不同的数字后可以选择不同的功能使用 在刚开始运行系统时会进行一个系统暂停,使用了windows函数库里面的system(\\\"pause\\\"),暂停系统有助于保护系统稳定性,防止系统出现闪屏等意外情况导致闪退等,并且使用了

    2024年02月09日
    浏览(46)
  • Java读取XML文件

    XML声明是XML文档的第一句,其格式如下 良好的XML文档必须只有一个根元素,就是紧接这声明后面接着的第一个元素,其他元素都是这个根元素的子元素,根元素完全包括文档中其他所有的元素。 在XML文档中,大小写是有区别的。\\\"A\\\"和\\\"a\\\"是不同的标记。 所有标记必须成对出现

    2024年02月08日
    浏览(57)
  • qt xml文件写入读取

    ****************************************************************************** QT       += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {    

    2024年02月09日
    浏览(41)
  • Java读取XML文本文件

    圆周率没有尽头,风景一直在路上 编写测试的xml文本文件 编码读取(可根据自己需求改写读取节点)

    2024年02月16日
    浏览(72)
  • 如何用matlab实现矩阵与mat格式、xlsx格式文件互转

    目录 一、前言 二、.mat格式 三、.xlsx格式 四、出现load(‘file.mat’) 数据变成struct结构体的问题 当我们利用matlab去处理我们的实验数据时,常常需要读取mat格式、xlsx格式文件,而且有时候我们又将利用Python去做后续工作,这时候我们就迫切需要了解矩阵与mat格式、xlsx格式

    2024年01月18日
    浏览(48)
  • XML文档详解

    目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 1.1 学习重点 由于在现代开发过程中,不需要开发人员手动解析XML文

    2024年02月16日
    浏览(43)
  • C# XML文件(相机参数保存和读取)

    XML是可扩展标记语言(Extensible Markup Language,XML)是一种数据语言,它将数据以一种简单的文本格式存储,可以被人类和几乎任何计算机理解。Microsoft在.Net Framework和其他微软产品中已经完全采用它。 XML的基本格式: C#操作XML方法详解 创建一个相机参数XML文件保存和读取的类

    2024年02月12日
    浏览(48)
  • Qt使用单例模式读取xml文件

    单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。 1、节省资源。一个类只有一个实例,不存在多份实例,节省资源。 2、方便控制。在一些操作公共资源的场景时,避免了多个对象引起的复杂操作。 在程序中多次使用同一个对象且作

    2024年02月20日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包