数据类型

MATLAB 中有 16 种基本数据类型或类。这些类中的每一个都是矩阵或数组的形式。除了函数句柄之外,这个矩阵或数组的大小至少为 0 乘 0,并且可以增长到任何大小的 n 维数组。函数句柄始终是标量(1 乘 1)。

MATLAB 中的重要时刻是默认情况下不需要使用任何类型声明或维度语句。定义新变量时,MATLAB 会自动创建它并分配适当的内存空间。

例:

a = 123;
b = [1 2 3];
c = '123';

>> whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              
  b         1x3                24  double              
  c         1x3                 6  char    

如果变量已经存在,MATLAB 将用新的数据替换原始数据,并在必要时分配新的存储空间。

基本数据类型

基本数据类型有:数字,logicalcharcellstructtablefunction_handle

数字数据类型

  • 浮点数默认

    MATLAB 以双精度或单精度格式表示浮点数。默认值是双精度,但你可以使用简单的转换函数使任何数字单精度:

    a = 1.23;
    b = single(a);
    
    >> whos
      Name      Size            Bytes  Class     Attributes
    
      a         1x1                 8  double              
      b         1x1                 4  single     
    
  • 整型

    MATLAB 有四个有符号整数和四个无符号整数类。有符号类型使你可以使用负整数和正整数,但不能表示与无符号类型一样宽的数字范围,因为一位用于指定数字的正号或负号。无符号类型为你提供更广泛的数字,但这些数字只能为零或正数。

    MATLAB 支持整数数据的 1 位,2 位,4 位和 8 字节存储。如果使用适合数据的最小整数类型,则可以节省程序的内存和执行时间。例如,你不需要 32 位整数来存储值 100。

    a = int32(100);
    b = int8(100);
    
    >> whos
      Name      Size            Bytes  Class    Attributes
    
      a         1x1                 4  int32              
      b         1x1                 1  int8               
    

    要将数据存储为整数,你需要将 double 转换为所需的整数类型。如果转换为整数的数字具有小数部分,则 MATLAB 将舍入为最接近的整数。如果小数部分恰好是 0.5,那么从两个同样接近的整数中,MATLAB 选择绝对值大小的那个。

    a  = int16(456);
    
  • char

    字符数组为 MATLAB 中的文本数据提供存储。与传统的编程术语保持一致,字符的数组(序列)被定义为字符串。MATLAB 的零售版中没有明确的字符串类型。

  • logical:逻辑值为 1 或 0,分别表示 true 和 false。用于关系条件和数组索引。因为它只是 TRUE 或 FALSE,所以它的大小为 1 个字节。

    a = logical(1);
    
  • 结构体。结构数组是一种数据类型,它使用称为字段的数据容器对不同数据类型的变量进行分组。每个字段可以包含任何类型的数据。使用 structName.fieldName 形式的点表示法访问结构中的数据。

    field1 = 'first';
    field2 = 'second';
    value1 = [1 2 3 4 5];
    value2 = 'sometext';
    s = struct(field1,value1,field2,value2);
    

    为了访问 value1,以下每个语法都是等效的

    s.first or s.(field1) or s.('first')
    

    我们可以使用第一种方法显式访问我们知道将存在的字段,或者传递字符串或创建字符串以访问第二个示例中的字段。第三个例子是说明点父语法符号采用一个字符串,该字符串与存储在 field1 变量中的字符串相同。

  • 表变量可以具有不同的大小和数据类型,但所有变量必须具有相同的行数。

    Age = [15 25 54]';
    Height = [176 190 165]';
    Name = {'Mike', 'Pete', 'Steeve'}';
    T = table(Name,Age, Height);
    
  • 单元格。它是非常有用的 MATLAB 数据类型:单元阵列是一个数组,它的每个元素可以是不同的数据类型和大小。它是非常强大的工具,可以根据需要操作数据。

    a = { [1 2 3], 56, 'art'};
    

    要么

    a = cell(3);
    
  • function handle 存储指向函数的指针(例如,存储到匿名函数)。它允许你将函数传递给另一个函数,或从 main 函数外部调用本地函数。

每种数据类型都有很多工具,还有内置的数据类型转换功能str2doubletable2cell)。

其他数据类型

有几种其他数据类型在某些特定情况下很有用。他们是:

  • 日期和时间:表示日期,时间和持续时间的数组。datetime('now') 返回 21-Jul-2016 16:30:16

  • 分类数组:它是用于存储具有一组离散类别的值的数据的数据类型。用于存储非数字数据(存储器有效)。可以在表中使用来选择行组。

    a = categorical({'a' 'b' 'c'});
    
  • 映射容器是一种数据结构,它具有独特的能力,不仅可以通过任何标量数值而且可以通过字符向量进行索引。对 Map 元素的索引称为键。这些键以及与它们关联的数据值存储在 Map 中。

  • 时间序列是按时间顺序采样的数据向量,通常以规则的间隔进行。存储与时间步长相关的数据非常有用,它有许多有用的方法可供使用。