Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

empty

创建指定类的空数组

说明

本页描述 empty 方法,此方法创建给定类的空数组。要测试现有数组是否为空数组,请使用 isempty

示例

A = ClassName.empty 返回指定类的空 0×0 数组。用类的实际名称替换 ClassName。有关空数组行为的详细信息,请参阅 MATLAB 中的空数组

示例

A = ClassName.empty(sz1,...,szN) 返回指定维度的空数组。至少一个维数必须为 0。

示例

A = ClassName.empty(sizeVector) 返回指定维度的空数组。至少一个维数必须为 0。

示例

全部折叠

在未指定大小的情况下,对 uint8 调用 empty 方法。

A = uint8.empty
A =

  0x0 empty uint8 matrix

为空数组赋值会将其扩展为非空数组。赋给空数组的值必须与该数组属于同一类,或可以转换为该类。MATLAB 使用该数组类型的默认值填充数组的其他元素,对于 uint8,默认值为 0

A(3,3) = 5
A = 3x3 uint8 matrix

   0   0   0
   0   0   0
   0   0   5

初始化非空数组

要初始化非空数组,请使用函数(例如 zerosones)用初始值填充数组。MATLAB 没有空值,因此所有非空数组的所有元素都必须有值。例如,您无法使用 empty 来创建 3×3 数组,因为有至少一个维度的长度必须为 0。

MATLAB 允许使用具有非零大小维度的空数组,只要有至少一个维度为 0 即可。在许多迭代算法中,可能会很自然地出现这样的空数组(如 0×5 数组),它们遵循与 0×0 空数组相同的规则。该数组有一个类,但不包含任何元素。

作为记录代码的一种方式,您可以创建具有非零维度大小的空数组。例如,创建一个维度为 0×5 的 int16 空数组。

A = int16.empty(0,5)
A =

  0x5 empty int16 matrix

使用 A 作为 6×5 整数矩阵的初始值,该矩阵由 1×5 个向量的垂直串联构成。

for i = 1:6
    A = [A; randi(9,[1 5],"int16")];
end
A
A = 6x5 int16 matrix

   8   9   2   9   6
   1   3   5   9   9
   2   9   9   5   8
   2   4   9   8   9
   6   1   8   9   7
   7   7   4   6   2

使用向量定义空数组的维度。

V = [0 0 6];
Bdouble = double.empty(V)
Bdouble =

  0x0x6 empty double array

输入参数

全部折叠

数组的维数,指定为整数。至少一个维度必须为 0。负值被视为 0。数组大小中不包括 1 的尾部维度。

维度向量,指定为非负整数的行向量。至少一个元素必须为 0。负值被视为 0。数组大小中不包括 1 的尾部维度。

输出参量

全部折叠

空数组,以指定类和维度的空数组形式返回。

详细信息

全部折叠

MATLAB 中的空数组

在 MATLAB® 中,空数组是有至少一个维度大小为 0 的数组。空数组没有元素。

可以通过 empty 方法初始化特定类的数组。您可以通过向空数组中赋予特定的值来将空数组扩展为非空数组。赋给数组的任何对象都必须属于同一类,或者是可以转换为空数组的类。例如,创建一个 uint8 的空数组,并尝试为其赋予一个字符串值。

A = uint8.empty;
A(3,3) = "word"
Unable to perform assignment because value of type 'string' is 
not convertible to 'uint8'.

注意

例如,由于空数组必须有至少一个大小为 0 的维度,因此无法使用 empty 来创建 3×3 数组。MATLAB 没有 null 值,因此所有非空数组的所有元素都必须赋值。要快速初始化非空数值数组,请考虑使用类似 zerosones 的函数。

用户定义的类的空数组

您可以初始化用户定义类的空数组。例如,empty 静态方法是此处定义的 ColorInRGB 类的隐藏方法。

classdef ColorInRGB
   properties
      Color (1,3) = [1,0,0];
   end
   methods
      function obj = ColorInRGB(c)
         if nargin > 0
            obj.Color = c;
         end
      end
   end
end

调用 empty 方法。

A = ColorInRGB.empty;

通过对空数组赋值,可以将其扩展为非空数组。有关 MATLAB 如何用对象填充数组的详细信息,请参阅创建和初始化对象数组

标识空数组

可以使用 isemptysizelength 函数确定空对象数组。例如,创建在上一节中定义的 ColorInRGB 类的空数组。

A = ColorInRGB.empty(0,5);
isempty(A)
ans =

  logical

   1
size(A)
ans =

     0     5
length(A)
ans =

     0

串联空数组

空数组遵守数组串联行为。例如,创建一个 double 类型的空数组,并将其串联以创建第二个数组。

A = double.empty(0,5);
B = [A A]
B = 

  0×10 empty double matrix

提示

  • empty 是所有非抽象 MATLAB 类的隐藏、公共、静态方法。您可以在类定义中覆盖 empty 方法。

  • 若要创建空数组并且其数据类型对创建空数组没有特殊语法要求(例如使用 [] 创建双精度数组),则可以使用此方法。

版本历史记录

在 R2008a 中推出