Main Content

isequaln

测试数组相等性,将 NaN 值视为相等

说明

示例

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

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

示例

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

示例

全部折叠

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

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

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

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

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

比较结构体的相等性。

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

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

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

isequaln(true,1)
ans = logical
   1

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

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

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

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

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

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

比较向量的相等性。

tf = isequaln(A1,A2,A3)
tf = logical
   1

结果为逻辑值 1 (true),因为 isequaln 将 NaN 值视为彼此之间相等的值。

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

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

输入参数

全部折叠

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

提示

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

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

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

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

扩展功能

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

版本历史记录

在 R2012a 中推出

全部展开