Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

isequal

确定数组相等性

说明

示例

如果 AB 等效,则 tf = isequal(A,B) 返回逻辑值 1 (true);否则,返回逻辑值 0 (false)。有关每种数据类型的等效性的定义,请参阅输入参数部分。NaN(非数字)、NaT(非时间)、未定义的分类元素和 <missing> 值被视为与其他元素不相等,彼此之间也不相等。

要将 NaNNaT<undefined><missing> 值视为与其他此类值相等,请使用 isequaln

示例

如果所有输入是等效的,则 tf = isequal(A1,A2,...,An) 返回逻辑值 1 (true)。

示例

全部折叠

创建两个数值矩阵并比较其相等性。

A = zeros(3,3)+1e-20;
B = zeros(3,3);
tf = isequal(A,B)
tf = logical
   0

函数返回逻辑值 0 (false),因为这两个矩阵有些许不同,并非完全相等。

创建两个结构体,并以不同的顺序指定字段。

A = struct('field1',0.005,'field2',2500);
B = struct('field2',2500,'field1',0.005);

比较结构体的相等性。

tf = isequal(A,B)
tf = logical
   1

即使每个结构体中的字段顺序不同,isequal 也将这些字段视为相同,因为它们的值相等。

将逻辑值 true 与双精度整数 1 进行比较。

isequal(true,1)
ans = logical
   1

请注意,isequal 在测试相等性时不考虑数据类型。

同样地,将 'A' 与等效于 ASCII 的整数 65 进行比较。

isequal('A',65)
ans = logical
   1

结果为逻辑值 1 (true),因为 double('A') 等于 65

创建三个包含 NaN 值的向量。

A1 = [1 NaN NaN];
A2 = [1 NaN NaN];
A3 = [1 NaN NaN];

比较向量的相等性。

tf = isequal(A1,A2,A3)
tf = logical
   0

结果为逻辑值 0 (false),因为 isequal 将 NaN 值视为彼此之间互不相等。

确定阿拉斯加州安克雷奇市 2013 年 1 月 13 日午夜是否等于开罗在相同日期的上午 11 点。

t1 = datetime(2013,1,13,0,0,0,'TimeZone','America/Anchorage');
t2 = datetime(2013,1,13,11,0,0,'TimeZone','Africa/Cairo');
tf = isequal(t1,t2)
tf = logical
   1

给该日期加上 8 个月并比较这些日期时间值的相等性。

t1 = datetime(2013,9,13,0,0,0,'TimeZone','America/Anchorage');
t2 = datetime(2013,9,13,11,0,0,'TimeZone','Africa/Cairo');
tf = isequal(t1,t2)
tf = logical
   0

由于开罗不遵循夏令时,日期时间值不再相等。

在比较包含相同字符序列的字符向量和字符串标量时,即使大小和数据类型不同,isequal 也会返回逻辑值 1 (true)。

isequal("foo",'foo')
ans = logical
   1

输入参数

全部折叠

要比较的输入,指定为数组。

在某些情况下,输入的类型不必匹配:

  • 如果数值输入的大小相同且内容等值,则它们是等效的。该检验将比较数值数组的实部和虚部。

  • 对于表、时间表、结构体和元胞数组,仅当其所有元素和属性都相等时,它们才是等效的。

  • 包含相同字符序列的字符串标量和字符向量是等效的。

某些数据类型比较具有涉及元数据的特殊注意事项。如果输入全部为

  • 结构体 - 只要内容相等即可,字段顺序无需相同。

  • 有序分类数组 - 必须具有相同的类别集(包括其顺序)。

  • 非有序分类数组 - 可以有不同的类别集,isequal 会比较每对元素的类别名称。

  • 日期时间数组 - isequal 在比较时间点时会忽略显示格式。如果数组都与时区关联,则 isequal 会比较时刻而不是钟面时间(例如,时刻 01-May-2018 09:00:00 EDT01-May-2018 06:00:00 PDT 相同,因此 isequal 返回 true,即使钟面时间 9:00 和 6:00 不同)。

  • 对象 - isequal 为具有相同属性值的同一类对象返回逻辑值 1 (true)。

要比较的输入序列,指定为数组。

在某些情况下,输入的类型不必匹配:

  • 如果数值输入的大小相同且内容等值,则它们是等效的。该检验将比较数值数组的实部和虚部。

  • 对于表、时间表、结构体和元胞数组,仅当其所有元素和属性都相等时,它们才是等效的。

  • 包含相同字符序列的字符串标量和字符向量是等效的。

某些数据类型比较具有涉及元数据的特殊注意事项。如果输入全部为

  • 结构体 - 只要内容相等即可,字段顺序无需相同。

  • 有序分类数组 - 必须具有相同的类别集(包括其顺序)。

  • 非有序分类数组 - 可以有不同的类别集,isequal 会比较每对元素的类别名称。

  • 日期时间数组 - isequal 在比较时间点时会忽略显示格式。如果数组都与时区关联,则 isequal 会比较时刻而不是钟面时间(例如,时刻 01-May-2018 09:00:00 EDT01-May-2018 06:00:00 PDT 相同,因此 isequal 返回 true,即使钟面时间 9:00 和 6:00 不同)。

  • 对象 - isequal 为具有相同属性值的同一类对象返回逻辑值 1 (true)。

提示

  • 两个函数句柄的相等性取决于它们的构造方式。有关详细信息,请参阅比较函数句柄

  • 对于两个具有动态属性的对象,即使它们具有相同的属性名称和值,isequal 也会返回逻辑值 0 (false)。

  • isequal 在测试两个对象是否相等时仅比较存储的(非从属)属性。

  • 比较两个句柄对象时,使用 == 可以测试它们是否具有相同的句柄。使用 isequal 确定具有不同句柄的两个对象是否具有相同的属性值。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

在 R2006a 之前推出