gpt4 book ai didi

matlab - 如何比较两个数组的所有元素?

转载 作者:太空宇宙 更新时间:2023-11-03 19:08:48 25 4
gpt4 key购买 nike

我有两个大数组,大约有 1000 行和 1000 列。我需要比较这些数组的每个元素,如果对应的元素相等,则将 1 存储在另一个数组中。

我可以用 for 循环做到这一点,但这需要很长时间。我怎样才能更快地做到这一点?

最佳答案

给出的答案都是正确的。我只想详细说明 gnovice's关于浮点测试的评论。

比较 float 是否相等时,需要使用容差值。通常使用两种类型的公差比较:绝对公差和相对公差。 ( source )

ab 的绝对公差比较如下:

|a-b| < tol

相对公差比较如下:

|a-b| < tol*max(|a|,|b|) + tol_floor

您可以将以上两个实现为匿名函数:

%# absolute tolerance equality
isequalAbs = @(x,y,tol) ( abs(x-y) <= tol );

%# relative tolerance equality
isequalRel = @(x,y,tol) ( abs(x-y) <= ( tol*max(abs(x),abs(y)) + eps) );

然后您可以将它们用作:

%# let x and y be scalars/vectors/matrices of same size
x == y
isequalAbs(x, y, 1e-6)
isequalRel(x, y, 1e-6)

关于matlab - 如何比较两个数组的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com