MATLAB - 数据类型
MATLAB 数据类型现代指南
Section titled “MATLAB 数据类型现代指南”MATLAB 使用动态类型系统,这意味着您在使用变量之前无需声明其类型。MATLAB 会自动分配内存并确定最合适的数据类型。MATLAB 中的基本数据结构是数组,它可以容纳各种类型的数据。
% MATLAB 在赋值时推断类型myInteger = 42; % 默认推断为 'double'myText = "Hello World"; % 推断为 'string'基本数据类型
Section titled “基本数据类型”以下是现代 MATLAB 编程中最重要的几种数据类型:
| 类别 | 数据类型 | 描述与最佳用例 |
|---|---|---|
| 数值 | double | 默认的 64 位双精度浮点数。大多数数值计算的标准选择。 |
| 数值 | single | 32 位单精度浮点数。当内存有限且不需要高精度时使用(例如,大型图像数据)。 |
| 数值 | int8, int16, int32, int64 | 不同大小的带符号整数。用于自然为整数值的数据(例如,计数器、索引)以节省内存。 |
| 文本 | string | 现代文本标准。 字符串数组灵活且支持丰富的函数集。于 R2016b 中引入。 |
| 文本 | char | 传统字符数组。'hello' 是一个 1x5 的字符数组。在文本操作方面不如 string 灵活。 |
| 逻辑 | logical | 表示 true (1) 或 false (0)。用于索引、掩码和控制流。 |
| 表格 | table | 混合类型列式数据的容器。数据分析的必备工具。 变量可以具有不同的数据类型(例如,数字、文本、分类数据)。 |
| 表格 | timetable | 一种按时间索引的专用 table。非常适合时间序列数据。 |
| 容器 | cell array | 一种数组,其中每个元素(单元格)可以容纳任何其他数据类型,包括另一个数组。当数据不规则且无法放入 table 时使用。 |
| 容器 | struct | 具有命名字段的结构,类似于对象。适用于将相关数据分组到一个变量名下。 |
使用现代数据类型
Section titled “使用现代数据类型”% 1. 'string' 类型是文本的首选names = ["Alice"; "Bob"; "Charlie"];greetings = "Hello, " + names; % 字符串数组支持直观的操作
% 2. 用于混合数据的 'table' 类型lastName = ["Jones"; "Miller"; "Smith"];age = [34; 45; 29];isFullTime = [true; false; true];
employeeData = table(lastName, age, isFullTime, 'RowNames', names)
% 轻松访问表中的数据millersAge = employeeData.age("Bob")
% 3. 自动类型转换result = 5 + 3.14; % 整数(存储为 double)+ double -> double
% 4. 显式类型转换dataAsSingle = single(result);textFromNumber = string(dataAsSingle);数据类型转换与识别
Section titled “数据类型转换与识别”您可以在兼容的数据类型之间进行转换,并以编程方式检查变量的类型。
关键转换函数
Section titled “关键转换函数”- 数值到字符串:
string(),num2str(),sprintf() - 字符串到数值:
str2double(),double() - 数组到表格:
array2table(),cell2table() - 表格到数组:
table2array(),table2cell()
识别变量类型
Section titled “识别变量类型”使用 class(variable) 获取作为字符串的类型,或使用 is* 函数进行逻辑检查。
x_num = 10;x_str = "10";x_log = true;
% 获取类名disp(['The class of x_num is: ', class(x_num)]); % 输出: double
% 使用 is* 函数检查类型if isnumeric(x_num) disp('x_num is numeric.');end
if isstring(x_str) disp('x_str is a string.');ند
% 编程方式处理类型switch class(x_log) case 'double' disp('Variable is a double.'); case 'logical' disp('Variable is a logical.'); otherwise disp('Variable is of another type.');end- 默认使用
double进行所有浮点运算,除非您有特定的内存或精度要求。 - 对于任何文本操作任务,强烈推荐使用
string数组而不是字符数组。它们功能更强大、更直观。 - 对所有表格或实验数据使用
table和timetable。 它们使您的代码比使用数值矩阵或单元格数组更简洁、更具可读性,并且不易出错。 - 仅当您确定数据适配且内存节省显著时,才使用整数(
int32等)。MATLAB 的核心数学函数已针对double进行了优化。