当前位置: 首页 > backend >正文

MATLAB中的table数据类型:高效数据管理的利器

MATLAB中的table数据类型:高效数据管理的利器

什么是table数据类型?

MATLAB中的table是一种用于存储列向数据的数据类型,它将不同类型的数据组织在一个表格结构中,类似于电子表格或数据库表。自R2013b版本引入以来,table已成为MATLAB中处理表格数据的首选方式。

table的每个列可以包含不同类型的数据(数值、字符、分类、逻辑等),但每列必须具有相同的行数。这种数据结构特别适合处理异构数据集,是数据分析和工作流中的重要工具。

创建table

基本创建方法

这里就如同excel创建的内容一样,只是在matlab中需要使用数组进行创建,需要保证内容维度相同。

% 从工作区变量创建table
names = {'Alice'; 'Bob'; 'Charlie'};
ages = [25; 30; 35];
height = [1.68; 1.82; 1.75];
isStudent = [true; false; false];
%创建table
personTable = table(names, ages, height, isStudent)

在这里插入图片描述

指定列名和行名

表的变量名可以创建时同时生成,或者随后更改

personTable = table(names, ages, height, isStudent, ...'VariableNames', {'FullName', 'Years', 'Height_m', 'IsStudent'}, ...'RowNames', {'Person1', 'Person2', 'Person3'})
% 创建后修改列名
personTable.Properties.VariableNames = {'Name', 'Age', 'Height', 'IsStudent'};

从文件导入数据创建table

表格内容可以直接excel导入,或者CSV文件导入,文件内容如下:
在这里插入图片描述
但是导入之后需要调整标签内容

% 从CSV文件读取
dataTable = readtable('mydata.csv');% 从Excel文件读取
excelTable = readtable('data.xlsx', 'Sheet', 'Sheet1')
% 提取每一行的名字
rowName=excelTable.Var1;
% 删除第一行
excelTable.Var1=[];
% 给每一行名字
excelTable.Properties.RowNames=rowName;% 显示前几行
head(excelTable)

excel直接读入的内容:第一列并不是名字,需要移除后重新添加列名
在这里插入图片描述

访问和操作table数据

数据索引方法

% 使用点表示法访问列
ages = personTable.Age% 使用大括号访问原始数据
firstHeight = personTable{1, 'Height'}% 使用圆括号创建子表
subTable = personTable(1:2, {'Name', 'Age'})% 逻辑索引
students = personTable(personTable.IsStudent,:)

逻辑索引非常像excel中的筛选功能,比如筛选身高超过1.8的人

添加和删除列

% 添加新列
personTable.Gender = categorical({'F'; 'M'; 'M'});
personTable.Weight = [65,70,75]';
% 计算并添加派生列
personTable.BMI = personTable.Weight ./ (personTable.Height.^2);
% 删除列
personTable.IsStudent=[]

派生列是通过已经存在的列计算得到新的列
在这里插入图片描述

排序和筛选

% 按年龄排序
sortedTable = sortrows(personTable, 'Age');
% 筛选特定条件的数据
tallPeople = personTable(personTable.Height > 1.80, :);

在这里插入图片描述

table与其它数据类型的转换

与数组和矩阵的转换

% table转换为矩阵(仅数值数据)
numericData = table2array(personTable(:, {'Age', 'Height'}));% 矩阵转换为table
matrix = rand(5,3);
matrixTable = array2table(matrix, 'VariableNames', {'Var1', 'Var2', 'Var3'});

输出结果

numericData =25.0000    1.680030.0000    1.820035.0000    1.7500matrixTable =5×3 tableVar1        Var2       Var3  _______    ________    _______0.14189     0.65574    0.757740.42176    0.035712    0.743130.91574     0.84913    0.392230.79221     0.93399    0.655480.95949     0.67874    0.17119

总结

MATLAB中的table数据类型为处理表格数据提供了强大而灵活的工具。通过本文介绍的各种方法,你可以初步了解table的使用方法。

http://www.xdnf.cn/news/9758.html

相关文章:

  • OCC笔记:面、边的方向(TopAbs_Orientation)
  • Triton推理服务器部署YOLOv8(onnxruntime后端和TensorRT后端)
  • C++哈希
  • GitHub Copilot 使用手册与原理解析
  • 80x86CPU入栈与出栈操作
  • C++:lambda匿名函数
  • 【VSCode-Qt】Docker远程连接的项目UI文件在 VSCode 上无法预览
  • STM32F407VET6学习笔记8:UART5串口接收中断的Cubemx配置
  • Spring 面经
  • PnP(Perspective-n-Point)算法 | 用于求解已知n个3D点及其对应2D投影点的相机位姿
  • 5.LoadBalancer负载均衡服务调用
  • 【测试】Bug和用例
  • 视觉分析开发范例:Puppeteer截图+计算机视觉动态定位
  • 国内连接速度较快的常用 Yum 源及其具体配置方法
  • mysql一主多从 k8s部署实际案例
  • 【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
  • 什么是VR全景相机?如何选择VR全景相机?
  • http传输协议的加密
  • 黑马点评项目02——商户查询缓存(缓存穿透、缓存雪崩、缓存击穿)以及细节
  • 有关于常量的一节知识
  • JAVA学习 DAY1 初识JAVA
  • 生成式引擎的认知霸权:为什么传统内容失效?
  • 【AI非常道】二零二五年三月,AI非常道
  • 黑马程序员C++核心编程笔记--1 程序的内存模型
  • AniGS - 基于单张图像的动态高斯化身重建
  • 62、【OS】【Nuttx】编码规范解读(十)
  • 电缆中性点概念
  • webstrorm 提示(This file does not belong to the project)此文件不属于该项目
  • 深度学习-模型训练的相关概念
  • 【spring】spring中的retry重试机制; resilience4j熔断限流教程;springboot整合retry+resilience4j教程