代码之家  ›  专栏  ›  技术社区  ›  lhahne

用matlab计算矢量元素之间的最大距离

  •  3
  • lhahne  · 技术社区  · 16 年前

    假设我们有一个向量

    x = -1:0.05:1;
    ids = randperm(length(x));
    x = x(ids(1:20));
    

    我想计算元素之间的最大距离 x 以某种惯用的方式。只需迭代所有可能的 X 但是我觉得有一种方法可以用matlab的内置函数以一种疯狂但惯用的方式完成它。

    4 回复  |  直到 16 年前
        1
  •  7
  •   midtiby    16 年前

    怎么样

    max_dist = max(x) - min(x)
    

    ?

        2
  •  2
  •   High Performance Mark    16 年前

    你的意思是矢量中最大元素和最小元素的区别吗?如果你这样做了,这样的事情就会奏效:

    max(x) - min(x)
    

    如果你不这样做,那我就误解了这个问题。

        3
  •  2
  •   user85109    16 年前

    这是一个点间距离计算,虽然是一个简单的计算,因为您在一维中工作。实际上,在一个维度中落在最大距离处的点总是两个可能的点之一。所以你所需要做的就是从列表中抓取最小值和最大值,然后看看哪个远离问题点。因此,假设x中的数字是实数,这将起作用:

    xmin = min(x);
    xmax = max(x);
    maxdistance = max(x - xmin,xmax - x);
    

    另一种方法是,前一段时间我在文件交换上使用了一个通用的点间距离计算工具 (IPDM) . 它足够聪明,特别是像一维最远点问题这样的简单问题。这个电话可以帮你:

    D = ipdm(x,'subset','farthest','result','struct');
    

    当然,它不会像我上面写的简单代码那样高效,因为它是一个完全通用的工具。

        4
  •  1
  •   Chau    16 年前

    嗯…我很想有一个matlab在我的手上,它仍然在清晨,但什么样的东西,如:

    max_dist = max(x(2:end) - x(1:end-1));
    

    我不知道这是不是你要找的。