gpt4 book ai didi

rust - 如何将数据从Array2 输入到kdtree?

转载 作者:行者123 更新时间:2023-12-03 11:39:54 25 4
gpt4 key购买 nike

我在3x500的ndarray Array2中有一个点云。
我想使用KdTree crate 从这些点制作一棵kd树。
https://docs.rs/kdtree/0.6.0/kdtree/

  • 以下示例在KdTree文档中:

  • let dimensions = 2;
    let mut kdtree = KdTree::new(dimensions);

    但是当我尝试这样做时,我得到:

    cannot infer type for type parameter `A`
    consider giving `tree` the explicit type `kdtree::kdtree::KdTree<A, T, U>`, where the type parameter `A` is specified

    而且我不知道A,T和U应该是什么。
  • 要添加我尝试使用的要点:

  • pub fn add(&mut self, point: U, data: T) -> Result<(), ErrorKind> 

    但是我不知道应该是什么数据。

    最佳答案

    这是因为您仅尝试运行此命令:

    let dimensions = 2;
    let mut kdtree = KdTree::new(dimensions); // kdtree type is KdTree<?, ?, ?>

    代替 :

    let a: ([f64; 2], usize) = ([0f64, 0f64], 0);
    let b: ([f64; 2], usize) = ([1f64, 1f64], 1);
    let c: ([f64; 2], usize) = ([2f64, 2f64], 2);
    let d: ([f64; 2], usize) = ([3f64, 3f64], 3);

    let dimensions = 2;
    let mut kdtree = KdTree::new(dimensions); // kdTree type is KdTree<f64, usize, &[f64; 2]>

    kdtree.add(&a.0, a.1).unwrap();
    kdtree.add(&b.0, b.1).unwrap();
    kdtree.add(&c.0, c.1).unwrap();
    kdtree.add(&d.0, d.1).unwrap();

    您可以将顶部代码更改为:

    let dimensions = 2;
    // we provide the type ourselves
    let mut kdtree: KdTree<f64, usize, &[f64; 2]> = KdTree::new(dimensions);

    现在,Rust在编译时如何推断 type of variables发生了这种情况。

    The compiler can usually infer what type we want to use based on the value and how we use it



    在第二段代码中,Rust通过查看 kdtree方法能够确定 add的类型,但是在第一种情况下,由于没有提供额外的信息,因此没有发生这种情况。

    第三段代码有效,因为我们明确键入了 kdtree的类型。

    But I don't know what data is supposed to be



    这里 data : Tgeneric,可以是任何东西。

    关于rust - 如何将数据从Array2 <f64>输入到kdtree?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343789/

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