MATLAB - 电子表格

24 Jul 2025 | 12 分钟阅读

引言

在 MATLAB 中,有无数功能可用于处理大多数电子表格文件,这使其成为组织中经常处理 Excel(.xls、.xlsx)和分隔符(CSV)格式电子表格文件的宝贵工具。这种集成有助于数据导入和导出,以及 MATLAB 和电子表格应用程序之间的数据分析,其中各种数据可以轻松地在 MATLAB 和电子表格应用程序之间传输,而不会丢失数据结构和格式。

可以使用 MATLAB 中的各种内置函数自动执行电子表格文件上的数据操作。一些基本函数,如 readtable、readmatrix 和 readcell,允许用户将数据作为表格、矩阵或元胞数组导入 MATLAB 环境,从而更轻松地进行结构操作。

这些函数非常适合所有类型的自定义,包括定义工作表、范围或单元格格式,因为它涉及选择电子表格文件或包含多个工作表的大型电子表格文档的特定区域。在 数据类型 和格式方面,MATLAB 具有无限制和固定点数字、文本数据的 C/R 字符串 以及日期数据的串行日期和双精度向量,这使得处理数据更加容易,并且该工具具有内置的量化数据格式化工具,可以将实际数据数值化。

在数据分析工作流中集成电子表格的重要性

这种格式在商业运营、工业、工程科学和研究的许多领域中都非常受欢迎。与电子表格的交互使用户能够将 MATLAB 的计算和可视化工具应用于其电子表格数据。这种三向连接的解决方案允许在无需物理地将数据移动到另一个应用程序或转换数据类型以进行处理的情况下,处理和分析数据。

将电子表格数据导入 MATLAB 后,用户可以获得更全面的 数据预处理 和分析工具等,还可以将收集的数据转化为有用的信息。

使用 MATLAB 处理电子表格的好处

  • 高级数据分析和处理:与大多数电子表格程序相比,MATLAB 配备了用于计算风格和算法应用程序。MATLAB 增强了电子表格数据上的计算、线性代数、统计分析和 机器学习模型,通过简单的数学公式查看电子表格计算和格式化的数字。
  • 增强的数据可视化:MATLAB 包含大量的绘图和 数据可视化 功能,优于通常在电子表格中获得的简单图表。它能够制作出版级质量的图形、多层图和交互式可视化,使其非常适合展示有时复杂的模式和结果。
  • 自动化和可重复性:MATLAB 受益于基于脚本的环境,用户可以通过该环境设计一系列操作,一旦新电子表格数据可用,就可以对其进行重复。
  • 高效处理大型数据集:使用电子表格软件的一个缺点是,当数据集非常庞大时,软件可能会锁定或花费更长时间来显示结果,而 MATLAB 是为处理大量数据而开发的。由于 MATLAB 的设计和功能方式,内存组织和内置函数使其非常适合处理大型数据集。
  • 与其他数据源无缝集成:除了电子表格,MATLAB 还可以读取数据库、文本文件和网络数据,并向它们写入数据。它还执行无缝集成功能,能够连接多个数据源并在应用程序内分析结果。

MATLAB 支持的电子表格文件类型

支持格式概述

Excel 文件(.xls 和 .xlsx)

  • `.xls` 格式适用于 Microsoft Excel 的早期版本,即 2003 年之前的版本。它是一种二进制文件格式,一次最多只能存储 65536 个单元格和 256 列。
  • 第二个是 `.xlsx`,是基于 XML 技术的新格式,由 Microsoft Excel 2007 推出。它支持多达 1,048,576 行和 16,384 列,非常适合大量数据。
  • MATLAB 可以读取和写入 `.xls` 和 `.xlsx` 格式的数据,这使用户能够高效地处理 Excel 数据。

逗号分隔值(.csv)

  • `.csv` 文件本质上是文本文件,数据之间用逗号分隔。
  • CSV 格式易于附加,可以在任何文本编辑器中打开,并且与几乎所有应用程序兼容。
  • 此格式适用于简单的数据归档,以及文件大小、软件兼容性和文件检索至关重要的场合。

制表符分隔的文本文件(.txt)

  • 制表符分隔的文件与逗号分隔值部分中详细介绍的逗号分隔文件类似;但是,这些文件使用制表符作为分隔符而不是逗号。尽管它们在技术上不属于“电子表格”格式,但 MATLAB 确实接受 `.txt` 文件作为一种表格类型。
  • 此格式对于数据包含逗号或其他可能干扰 `.csv` 格式的符号的应用程序来说很有用。
  • 制表符分隔文件因其简单的架构而方便,并且 MATLAB 函数(如 `readtable` 和 `writetable`)基本上可以处理这些文件。

MATLAB 函数和工具箱

读取数据

  • `readtable`:此函数从电子表格读取数据,并将其加载到 MATLAB 中,作为具有工作表名称、范围以及文件是否包含标题等选项的表格。它仅支持 `.xls`、`.xlsx`、`.csv` 和 `.txt` 文件格式。
  • `readmatrix`:主要用于从电子表格中提取的各种基于矩阵列的数据。它适用于数字数据文件,包括 `.xls`、`.xlsx`、`.csv`、`.txt`。
  • `readcell`:用于导入电子表格文件中的元胞数组,`readcell` 更常用于单个单元格中混合文本和数字的情况。

写入数据

  • `writetable`:将表格格式的数据导出到 Excel、MS excel、csv 或文本文件。它的设计非常通用,因为它接受工作表名称、单元格范围和分隔符等选项。
  • `writematrix`:writematrix(X filename extension),有助于以矩阵形式保存数字数据,通过支持 `.xls`、`.xlsx` 和 `.csv` 来保持与 Excel 的兼容性。
  • `writetable`:主要用于保存表格数据。与大多数文件写入函数不同,`writetable` 仅支持导出到 `.xls` 和 `.xlsx`。
  • `writecell`:还允许将元胞数组写入工作表,它接受 `.xls`、`.xlsx`、`.csv` 和 `.txt` 格式的文本、数字和逻辑值等数据类型。

工具箱

  • MATLAB 电子表格导入工具:提供一个图形界面,可以通过该界面从电子表格导入数据。此概念的一个优点是用户无需使用脚本即可选择交互式工作表、范围和不同的数据类型。
  • 统计和机器学习工具箱:提供用于在统计基础上进行复杂分析的工具,同时还能处理电子表格。
  • MATLAB 报告生成器:支持自动报告准备,其中分析结果将生成报告,并包含用于报告准备的数据和文档。

从电子表格读取数据

为了处理大型数据集并执行分析,将数据从电子表格读入 MATLAB 至关重要。MATLAB 包含四个非常高效的函数,即 `readtable`、`xlsread`、`readmatrix` 和 `readcell`,用于根据用途导入不同类型的数据。

1. 使用 `readtable` 函数

要将电子表格数据导入 MATLAB,`readtable` 函数是最常用和最灵活的方法之一,尤其适用于混合数据类型,包括数字数据、字符串、日期等。将电子表格数据读取到表中。

基本语法

  • 此命令将特定电子表格文件的全部内容复制到 MATLAB 表格式。
  • 在 MATLAB 中,表格在处理不同数据类型的数据时非常有用,因为它们可以通过名称访问,并且非常适合管理带有标签的工作表数据。

指定工作表

通过此,您可以轻松地从 Excel 中的特定工作表读取数据

这种灵活性使用户能够输入和操作多工作表电子表格,而无需任何帮助。

选择数据范围

为简单起见,请指定特定的单元格范围,以便仅导入选定的数据字符串。

当您只需要电子表格的一部分进行解释时,此范围指定特别有用。

处理标题

通常,JASP 导入/导出过程将第一行归为变量标题。您可以使用 `'ReadVariableNames'` 选项更改此设置,例如

2. 使用 `xlsread` 函数

MATLAB 以前使用 `xlsread` 函数来读取要存储在电子表格中的数据。尽管现在有 `readtable` 和其他一些函数执行类似任务,但 `xlsread` 由于向后兼容 MATLAB 仍然可能有用。

基本语法

此命令至少适用于数字字段,不包括数据库中的文本字段。因此,`xlsread` 主要最适合仅在单元格中包含数字的电子表格。

使用 `xlsread` 处理特定工作表和范围

正如您已经看到 `readtable`,您可以指定工作表和范围。

这对于查找特定信息很有用,但仅适用于数字结果,尽管通过其他参数也可以使用。

局限性和替代方案

  • 局限性:`xlsread` 处理混合数据类型读取不如 `readtable` 高效。它还依赖于在 Windows 系统上安装 Excel,这使得它在其他操作系统上不易获得。
  • 替代方案:建议使用 `readtable`、`readmatrix` 或 `readcell` 函数,具体取决于读取的数据类型。这些函数更灵活,并且可以在开发的平台中实现。

3. 使用 readmatrix 和 readcell

在此版本的新增功能中,MATLAB 提供了 `readmatrix` 来替换旧的 `xlsread` 函数用于读取数字数据,并提供 `readcell` 用于读取元胞数组数据。这些函数更有效,并支持不同的文件格式。

使用 `readmatrix` 导入矩阵数据

此函数将电子表格的内容读取到数字矩阵中,同时自动忽略所有非数字条目。当数据库中的所有值都是数字时,这特别有用。

指定工作表和范围

此外,您可以按照 `readtable` 的附加参数读取特定的工作表和范围

这种方法使得在不处理非数字项的情况下轻松提取特定的数值数据变得容易。

使用 `readcell` 导入元胞数据

`readcell` 将包括数字、文本和日期在内的所有电子表格内容导入到元胞数组中。对于混合类型数据,此函数非常完美,因为所有元素都将以其原始形式保留。

使用 `readcell` 进行选择性导入

就像 `readmatrix` 一样,您可以使用 `readcell` 指定工作表和范围

它灵活处理数据集结构中的复杂性,因为它提供了处理标签、日期和混合类型值的解决方案。

将数据写入电子表格

使用 `writetable`

`writetable` 函数是一个高度通用的工具,正如我将在本文档中演示的,各行各业的用户都发现它非常易于使用,可以将表格格式的数据导出到电子表格格式的文件(例如 `.xlsx`)。表格非常适合以行和列组织的数据,并且每个列都可以包含不同类型的数据,例如数字、文本、日期等。

1. 将表导出到电子表格文件

从 MATLAB 桌面:要导出 MATLAB 中的表,请右键单击并选择“创建新”然后“表”,或打开现有表,然后选择“文件导出”选项并选择“writetable”以将数据保存为电子表格。例如

这将生成一个名为 fruit_data.xlsx 的 Excel 文件,其中包含 ID、Fruit 和 Price。

2. 定义工作表、范围和文件类型

工作表指定:还可以使用 `Sheet` 参数决定在哪里写入数据。

  • 定义单元格范围:如果您想从特定单元格开始写入,则使用 Range 参数。
  • 文件格式:需要注意的是,`writetable` 函数最后仅支持 `.xls` 和 `.xlsx` 格式。只需在文件名中指示文件扩展名即可。

使用 `xlswrite` 和 `writematrix`

此外,`writetable` 推荐用于表,而 `xlswrite` 和 `writematrix` 是导出矩阵和元胞数组的其他方法。

1. `xlswrite` 函数

在将矩阵、元胞数组和相对简单的数据写入电子表格文件时非常有用。它在与旧版 MATLAB 和 Excel 交互时特别有效,并且仅支持 `.xls` 格式,而不支持较新的 `.xlsx` 格式。

  • 元胞数组支持:`xlswrite` 也适用于元胞数组,这使其非常有用;尤其当要写入 Excel 的数据包含多种数据元素时。
  • 工作表和范围选择:就像 `writetable` 一样,您可以指定工作表和范围。

2. `writematrix` 函数

在较新版本的 Matlab 中,`writematrix` 是为了专门将数字矩阵写入电子表格文件而开发的,其方式比 `xlswrite` 更自然地支持 `.xlsx` 格式。

  • 单元格兼容性:如果矩阵中有文本数据,请使用“writecell”,它适用于包含混合数据类型的矩阵。

MATLAB 中的电子表格操作技术

在 MATLAB 中遍历电子表格并选择数组的部分工作非常愉快,尤其是当您可以访问所需的工作表或范围并格式化数据时。

示例:操作多工作表数据

例如,假设您有一个包含多个工作表的 Excel 文件 - 每个工作表代表月度销售额。有两种方法可以将所有数据汇总在一起:可以从每个工作表中选择性地读取数据,然后进行计算,最后,将摘要写入新工作表。

格式化要导出的电子表格数据

格式化在导出数据时也起着重要作用,尤其是在呈现数据外观的整洁性方面。这非常有意义,因为在 MATLAB 中,您可以设置数字、分类和文本数据在导出前将如何格式化,以便适应其他特定格式的数据,例如日期。

1. 格式化数字数据

您可以通过将数字转换为字符串或更改显示格式来控制数字在导出前在 MATLAB 中的格式。

导出时四舍五入数字

将数字数据转换为文本格式

将具有特定小数位的数字转换为文本字符串,当电子表格的某一部分必须以文本形式显示时,这可能很有用。

2. 格式化分类数据

分类变量倾向于表示类或类别,并且可以以可读的格式导出此类数据以便导出。

3. 处理日期和字符串

日期在迁移到电子表格时通常会因为格式问题而出现问题。MATLAB 提供了检查要使用的日期格式的机制。

将日期转换为标准格式

4. 自定义导出格式

在某些情况下,特殊格式可能需要您在写入电子表格之前管理格式。

在上面的示例中,日期被转换为人类可读的月、日、年格式,然后调用 writetable。