Octave/Matlab - 向量中的所有元素是否相同?

V.V*_*cor 0 matlab octave

我需要一种方法来测试向量中的所有元素是否相同

在我的脚本中,我从一个空向量和一个将元素附加到向量的函数开始.我事先不知道这个函数会给我什么价值.我迭代并在每次迭代时向元素追加一个元素.只要每个要附加的新元素与前面的元素相同,迭代就会继续进行.一旦函数返回不同的值,while循环就会中断.

基本上,我需要做的是测试向量中的所有元素是否相同,通常,函数返回不同的值.我尝试过使用strcmp,但它给出了一个关于尺寸不匹配的错误.

提前致谢! V.Vocor

Lui*_*ndo 5

有许多方法可以测试矢量或数组是否x包含严格相等的元素.这里有几个.请注意,(:)只有在处理多个维度的数组时才需要这样做; 对于矢量,你可以删除:

  • all(x(1)==x(:))
  • max(x(:))==min(x(:))
  • all(diff(x(:)))==0
  • numel(unique(x(:)))==1

如果x是的double数据类型,它可能是更好地允许一些宽容,说tol = 1e-6.然后:

  • all(abs(x(1)-x(:))<=tol)
  • max(x(:))-min(x(:))<=tol

  • 另外我还有一个疑问,在使用容差时,将所有值与“x(1)”进行比较可能不合适?因为拿这个例子来说,允许的最大容差是“0.5”。那么如果向量是“X = [1 1.4 0.6]”,那么最大差异变为“0.8”,而条件仍然可能评估为“真”? (2认同)