Main Content

ne, ~=

确定不相等性

说明

示例

当输入 AB 不相等时,A ~= B 返回一个逻辑数组或一个由逻辑值组成的表,其各元素设置为逻辑值 1 (true);否则,元素是逻辑值 0 (false)。测试将比较数值数组的实部和虚部。当 AB 含有 NaN 或未定义的 categorical 元素时,ne 返回逻辑值 1 (true)。

ne(A,B) 是执行 A ~= B 这一操作的替代方法,但很少使用。它可以启用类的运算符重载。

示例

全部折叠

创建两个均包含实数和虚数的向量,然后比较这两个向量的不相等性。

A = [1+i 3 2 4+i];
B = [1 3+i 2 4+i];
A ~= B
ans = 1x4 logical array

   1   1   0   0

ne 函数会测试实部和虚部的不相等性,如果两个部分中有一个不相等或两个都不相等,将返回逻辑值 1 (true)。

创建字符向量。

M = 'magenta';

使用 ~= 测试是否有特定字符。

M ~= 'q'
ans = 1x7 logical array

   1   1   1   1   1   1   1

逻辑值 1 (true) 表示没有字符 'n'。向量中不存在该字符。

创建一个分类数组,其中包含两个值 'heads''tails'

A = categorical({'heads' 'heads' 'tails'; 'tails' 'heads' 'tails'})
A = 2x3 categorical
     heads      heads      tails 
     tails      heads      tails 

查找不在 'heads' 类别中的所有值。

A ~= 'heads'
ans = 2x3 logical array

   0   0   1
   1   0   1

逻辑值 1 (true) 表示值不在类别中。由于 A 只有两个类别,A ~= 'heads' 返回与 A == 'tails' 相同的结果。

比较 A 的行,确定其不相等性。

A(1,:) ~= A(2,:)
ans = 1x3 logical array

   1   0   0

逻辑值 1 (true) 表示行有不相等的类别值。

以十进制文本表示的多个数字不能精确地表示为二进制浮点数。这会导致 ~= 的运算结果有少许偏差。

对用十进制表示的数字执行几次减法运算,将结果存储到 C 中。

C = 0.5-0.4-0.1
C = -2.7756e-17

使用精确的十进制算术运算,C刚好等于 0。然而由于二进制浮点数算法的缘故,在这里它是一个很小的值。

比较 C0 是否不相等。

C ~= 0
ans = logical
   1

使用容差 tol(而不是使用 ~=)比较浮点数。

tol = eps(0.5);
abs(C-0) > tol
ans = logical
   0

C0 这两个数比 0.5 附近的两个连续浮点数更相互接近。许多情况下,C 的行为可能像 0

比较两个 datetime 数组的元素的不相等性。

创建处于不同时区的两个 datetime 数组。

t1 = [2014,04,14,9,0,0;2014,04,14,10,0,0];
A = datetime(t1,'TimeZone','America/Los_Angeles');
A.Format = 'd-MMM-y HH:mm:ss Z'
A = 2x1 datetime
   14-Apr-2014 09:00:00 -0700
   14-Apr-2014 10:00:00 -0700

t2 = [2014,04,14,12,0,0;2014,04,14,12,30,0];
B = datetime(t2,'TimeZone','America/New_York');
B.Format = 'd-MMM-y HH:mm:ss Z'
B = 2x1 datetime
   14-Apr-2014 12:00:00 -0400
   14-Apr-2014 12:30:00 -0400

检查 AB 中的元素不相等的位置。

A~=B
ans = 2x1 logical array

   0
   1

自 R2023a 开始提供

创建两个表并比较它们。行名称(如果两者中都存在)和变量名称必须相同,但顺序不必相同。输出的行和变量与第一个输入的顺序相同。

A = table([1;2],[3;4],VariableNames=["V1","V2"],RowNames=["R1","R2"])
A=2×2 table
          V1    V2
          __    __

    R1    1     3 
    R2    2     4 

B = table([4;2],[3;1],VariableNames=["V2","V1"],RowNames=["R2","R1"])
B=2×2 table
          V2    V1
          __    __

    R2    4     3 
    R1    2     1 

A ~= B
ans=2×2 table
           V1       V2  
          _____    _____

    R1    false    true 
    R2    true     false

输入参数

全部折叠

操作数,指定为标量、向量、矩阵、多维数组、表或时间表。输入 AB 必须具有相同的大小或具有兼容的大小(例如,A 是一个 M×N 矩阵,B 是标量或 1×N 行向量)。有关详细信息,请参阅基本运算的兼容数组大小

您可以比较任何类型的数值输入,并且比较不会因类型转换而损失精度。

  • 如果一个输入是 categorical 数组,另一个输入可以是 categorical 数组、字符向量元胞数组或单个字符向量。单个字符向量会扩展为与另一个输入大小相同的字符向量元胞数组。如果两个输入均为有序 categorical 数组,则必须具有相同的类别集(包括其顺序)。如果两个输入均非有序 categorical 数组,则可以有不同的类别集。有关详细信息,请参阅比较分类数组元素

  • 如果一个输入是 datetime 数组,则另一个输入可以是 datetime 数组、字符向量或字符向量元胞数组。

  • 如果一个输入是 duration 数组,则另一个输入可以是 duration 数组或数值数组。该运算符将每个数值视为一个天数,其中每天是有 24 小时的标准日。

  • 如果一个输入是字符串数组,则另一个输入可以是字符串数组、字符向量或字符向量元胞数组。AB 的对应元素以字典顺序进行比较。

表或时间表形式的输入必须满足以下条件: (自 R2023a 起)

  • 如果输入是表或时间表,则其所有变量都必须有支持该运算的数据类型。

  • 如果只有一个输入是表或时间表,则另一个输入必须为数值或逻辑数组。

  • 如果两个输入均为表或时间表,则:

    • 两个输入必须具有相同的大小,或其中一个必须为单行表。

    • 两个输入必须有相同名称的变量。但是,每个输入中的变量可以有不同的顺序。

    • 如果两个输入均为表,并且都有行名称,则其行名称必须相同。但是,每个输入中的行名称可以有不同的顺序。

    • 如果两个输入均为时间表,则其行时间必须相同。但是,每个输入中的行时间可以有不同的顺序。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | categorical | datetime | duration | table | timetable
复数支持:

扩展功能

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2006a 之前推出

全部展开