代表双向量的元素之间的亲近

时间:2017-01-29 01:30:37

标签: math

我有一个双向量:

r = -50 + (50+50)*rand(10,1)

现在我希望理想情况下向量中的所有数字等于容差1e-4。我想用标量r来表示每个s(r),这样它的值就可以了解向量的质量。如果向量中的所有元素都相等,则向量是高质量的。我可以轻松地运行for循环,如

for i=1:10
 for j=i+1:10
  check equality upto the tolerance
 end
end

但即使这样,我也无法计算嵌套for循环中要执行的计算,以指定表示质量的标量。是否有更好的方法,如果给定任何向量r长度n,我可以快速计算出代表向量质量的标量。

1 个答案:

答案 0 :(得分:1)

你的双环算法有点慢,顺序为O(n ** 2),其中n是向量的维数。这是一种快速查找向量元素的接近度的方法,可以按O(n)的顺序完成,只需要一次遍历元素。

找出向量元素的最大值和最小值。只需使用两个变量来存储最大值和最小值,并在所有元素中运行一次。最大值和最小值之间的差异称为值的range,这是值的常用measure of dispersion。如果值完全相等,则范围为零,表示完美的质量。如果范围低于1e-4,则向量具有可接受的质量。范围越大,平等就越差。

代码对于任何给定的语言都很明显,所以我会留给你。如果范围只是真正考虑了向量的两个极值,那么您可以使用其他变量度量,例如四分位数间距,方差或标准差。但范围似乎最适合您的要求。