Skip to content

MATLAB - 数据类型

MATLAB 使用动态类型系统,这意味着您在使用变量之前无需声明其类型。MATLAB 会自动分配内存并确定最合适的数据类型。MATLAB 中的基本数据结构是数组,它可以容纳各种类型的数据。

% MATLAB 在赋值时推断类型
myInteger = 42; % 默认推断为 'double'
myText = "Hello World"; % 推断为 'string'

以下是现代 MATLAB 编程中最重要的几种数据类型:

类别数据类型描述与最佳用例
数值double默认的 64 位双精度浮点数。大多数数值计算的标准选择。
数值single32 位单精度浮点数。当内存有限且不需要高精度时使用(例如,大型图像数据)。
数值int8, int16, int32, int64不同大小的带符号整数。用于自然为整数值的数据(例如,计数器、索引)以节省内存。
文本string现代文本标准。 字符串数组灵活且支持丰富的函数集。于 R2016b 中引入。
文本char传统字符数组。'hello' 是一个 1x5 的字符数组。在文本操作方面不如 string 灵活。
逻辑logical表示 true (1) 或 false (0)。用于索引、掩码和控制流。
表格table混合类型列式数据的容器。数据分析的必备工具。 变量可以具有不同的数据类型(例如,数字、文本、分类数据)。
表格timetable一种按时间索引的专用 table。非常适合时间序列数据。
容器cell array一种数组,其中每个元素(单元格)可以容纳任何其他数据类型,包括另一个数组。当数据不规则且无法放入 table 时使用。
容器struct具有命名字段的结构,类似于对象。适用于将相关数据分组到一个变量名下。
% 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);

您可以在兼容的数据类型之间进行转换,并以编程方式检查变量的类型。

  • 数值到字符串:string(),num2str(),sprintf()
  • 字符串到数值:str2double(),double()
  • 数组到表格:array2table(),cell2table()
  • 表格到数组:table2array(),table2cell()

使用 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 进行了优化。