main content

确定数组相等性 -凯发k8网页登录

确定数组相等性

说明

示例

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

要将 nannat 值视为与其他此类值相等,请使用 。

示例

如果所有输入是等效的,则 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 确定具有不同句柄的两个对象是否具有相同的属性值。

  • 比较空对象数组时,仅当数组具有相同的大小和类时,isequal 才返回逻辑值 1 (true)。

扩展功能

c/c 代码生成
使用 matlab® coder™ 生成 c 代码和 c 代码。

gpu 代码生成
使用 gpu coder™ 为 nvidia® gpu 生成 cuda® 代码。

版本历史记录

在 r2006a 之前推出

另请参阅

| | |

主题

    网站地图