1

我有一个像 x 这样的数组,我想对它做一些工作并将结果放入新的数组 y 中。那么我应该比较这两个。如果它们是相同的(即它们可能有点不同),那没关系,算法结束,否则我应该继续迭代,问题是比较这两者。它们是一个包含未知元素的两个二维数组。我已经做了两种不同的方式,但没有一个可以:第一种方式:

d = x - y
if d < 5 
   disp('end')
end

依此类推,但效果不佳,老实说 ,我使用的其他方式
根本不起作用:

isequal(x,y)

虽然它们是相同的,但它会返回 0,但如果它们不是,即使有一点差异,结果也会是 1,这是不正确的,因为我说算法应该考虑一点点差异并停止迭代我应该怎么做?

4

2 回答 2

2

如果5是一个 OK 阈值,那么这应该工作:

d=abs(x-y);
if all(d<5)
    disp('end')
end

如果您不知道阈值是多少,那么这是一个非常不同的问题。确定一个合理的阈值取决于您的应用程序,并且通常是一种权衡——如果您的数据是可变的,则可能没有“正确”的答案。查看一些基本统计信息 - 该zscore命令可能是一个有用的开始。

于 2013-07-16T14:48:12.100 回答
0

检查差异向量的另一种方法是在 MATLAB 中使用“find()”函数。作为诺兰,我认为你最好使用差异的绝对值。 idx = find(abs(a-b)>threshold)将为您提供超过阈值的索引。如果为 null,则终止迭代。

于 2013-07-16T18:43:25.263 回答