主要内容

isapprox

确定近似相等性

自 R2024b 起

说明

TF = isapprox(A,B) 确定两个输入数组中的哪些对应元素近似相等,并返回一个逻辑数组。如果对应元素位于近似相等区域内,则 TF 在对应位置包含 1 (true),否则包含 0 (false)。默认相对容差和绝对容差均为 1e-15;或者,如果 AB 的类型是 single,则为 5e-7

示例

TF = isapprox(A,B,tol) 使用由容差级别 tol 设置的相对容差和绝对容差来确定近似相等性。将 tol 指定为 "verytight""tight""loose""veryloose"

示例

TF = isapprox(A,B,Name=Value) 使用一个或多个名称-值参量指定选项。例如,isapprox(A,B,RelativeTolerance=1e-10) 使用指定的相对容差和绝对容差 0 来确定近似相等性。

示例

示例

全部折叠

创建两个数值标量值并比较它们是否相等。== 运算符返回逻辑值 0 (false),因为这些值有些许不同,并非完全相等。

A = sin(3/4*pi);
B = 1/sqrt(2);
A == B
ans = logical
   0

为了考虑舍入误差,请比较这些值是否近似相等。isapprox 函数返回逻辑值 1 (true),因为 AB 的值之间的差在默认容差范围内。

TF = isapprox(A,B)
TF = logical
   1

A - B
ans = 
1.1102e-16

比较双精度 π 值(小数点后有 15 位数值)与数值向量中的元素是否近似相等。

format long
A = pi
A = 
   3.141592653589793

B = [2*asin(1) integral(@(x) 1./sqrt(1-x.^2),-1,1) round(pi,10) 22/7]
B = 1×4

   3.141592653589793   3.141592653589721   3.141592653600000   3.142857142857143

TF = isapprox(A,B)
TF = 1×4 logical array

   1   0   0   0

isapprox 函数仅为第一个元素返回逻辑值 1 (true)。B 中所有其他元素与 A 的值之间的差大于默认容差。要接受输入数据中的更多噪声,请将相对容差和绝对容差级别指定为 "tight"

TF2 = isapprox(A,B,"tight")
TF2 = 1×4 logical array

   1   1   0   0

isapprox 函数仅为第一个和第二个元素返回逻辑值 1 (true)。要接受输入数据中的更多噪声,请将相对容差和绝对容差级别指定为 "loose"

TF3 = isapprox(A,B,"loose")
TF3 = 1×4 logical array

   1   1   1   0

isapprox 函数为前三个元素返回逻辑值 1 (true)。要接受输入数据中的更多噪声,请将相对容差和绝对容差级别指定为 "veryloose"

TF4 = isapprox(A,B,"veryloose")
TF4 = 1×4 logical array

   1   1   1   1

比较来自两个不同仪器的两组测量值是否近似相等。将绝对容差指定为 0.02,这是仪器的已知精度。如果您只指定绝对容差,则相对容差为 0

A = [1.00 2.00 3.10 NaN];
B = [0.99 2.01 3.15 NaN];
TF = isapprox(A,B,AbsoluteTolerance=0.02)
TF = 1×4 logical array

   1   1   0   0

输入参数

全部折叠

输入数据,指定为数组。AB 的大小必须相同或兼容。如果输入数组是复数,则它们的类型必须为 singledouble

指定 isapprox(A,B) 与指定 isapprox(B,A) 相同。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
复数支持:

相对容差和绝对容差级别,指定为下表中的值之一。有关详细信息,请参阅容差的近似相等区域

如果您指定 tol,则无法指定 RelativeToleranceAbsoluteTolerance 名称-值参量。

容差级别

AB 均为除 single 以外的任何类型时的容差

ABsingle 类型时的容差

"verytight"

1e-155e-7

"tight"

1e-121e-6

"loose"

1e-81e-4

"veryloose"

1e-31e-2

数据类型: string | char

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: TF = isapprox(A,B,RelativeTolerance=1e-10)

相对容差,指定为 [0, 1) 范围内的标量。

相对容差将近似相等元素之间允许的最大差定义为幅值较大的元素的一定比例。

  • 如果您未指定 RelativeToleranceAbsoluteTolerance 名称-值参量,则相对容差为 1e-15;或者,如果 AB 的类型是 single,则为 5e-7

  • 如果您指定 RelativeTolerance 名称-值参量,但未指定 AbsoluteTolerance 名称-值参量,则绝对容差为 0

示例: isapprox(A,B,RelativeTolerance=1e-10) 使用相对容差 1e-10 和绝对容差 0

示例: isapprox(A,B,RelativeTolerance=1e-10,AbsoluteTolerance=1e-8) 使用相对容差 1e-10 和绝对容差 1e-8

数据类型: double | single

绝对容差,指定为非负标量。

绝对容差将近似相等元素之间允许的最大差定义为固定数值。

  • 如果您未指定 RelativeToleranceAbsoluteTolerance 名称-值参量,则绝对容差为 1e-15;或者,如果 AB 的类型是 single,则为 5e-7

  • 如果您指定 AbsoluteTolerance 名称-值参量,但未指定 RelativeTolerance 名称-值参量,则相对容差为 0

有关浮点精度和算术的信息,请参阅浮点数

示例: isapprox(A,B,AbsoluteTolerance=1e-8) 使用绝对容差 1e-8 和相对容差 0

示例: isapprox(A,B,RelativeTolerance=1e-10,AbsoluteTolerance=1e-8) 使用相对容差 1e-10 和绝对容差 1e-8

数据类型: double | single

算法

全部折叠

版本历史记录

在 R2024b 中推出