博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flann中关于数据的stride
阅读量:4041 次
发布时间:2019-05-24

本文共 2178 字,大约阅读时间需要 7 分钟。

现在的问题是, 我有一堆数据是四维的, 但是查询时只需要用到前三维, 那么该怎么做呢?

有两种方法:

1) 用L2_3D

#include 
#include
#include
using namespace std;int main(int argc, char** argv){ float data[16] = {
1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4,}; flann::Matrix
dataset(data, 4, 4); flann::KDTreeSingleIndex< flann::L2_3D
> index(dataset, flann::KDTreeIndexParams(8)); index.buildIndex(); float queryData[4] = {
0,0,0,0}; flann::Matrix
query(queryData, 1, 4); flann::Matrix
matIndices(new int[1*3], 1, 3);//one query, return 3 nearest neighbors. flann::Matrix
matDists(new float[1*3], 1, 3); const flann::SearchParams searchParams(32, 0, false); index.radiusSearch(query, matIndices, matDists, 12.1, searchParams); for (int q = 0; q < 1; q++) { for (int r = 0; r < 3; r++) { cout << matIndices[q][r] << "\t"; for (int j = 0; j < 4; ++j) { cout << dataset[matIndices[q][r]][j] << "\t"; } cout << "dist:" << matDists[q][r] << endl; } } return 0;}

2) 用dataset 中 的stride 参数

#include 
#include
#include
using namespace std;int main(int argc, char** argv){ float data[16] = {
1, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 4, 4, 4, 4,}; flann::Matrix
dataset(data, 4, 3, 4 * sizeof(float)); flann::KDTreeSingleIndex< flann::L2
> index(dataset, flann::KDTreeIndexParams(8)); index.buildIndex(); float queryData[4] = {
0,0,0}; flann::Matrix
query(queryData, 1, 3); flann::Matrix
matIndices(new int[1*3], 1, 3);//one query, return 3 nearest neighbors. flann::Matrix
matDists(new float[1*3], 1, 3); const flann::SearchParams searchParams(32, 0, false); index.radiusSearch(query, matIndices, matDists, 12.1, searchParams); for (int q = 0; q < 1; q++) { for (int r = 0; r < 3; r++) { cout << matIndices[q][r] << "\t"; for (int j = 0; j < 4; ++j) { cout << dataset[matIndices[q][r]][j] << "\t"; } cout << "dist:" << matDists[q][r] << endl; } } return 0;}

两种方法的区别, 第一种查询数据的维数是4维, 第二种查询数据的维数是3维.

转载地址:http://aaxdi.baihongyu.com/

你可能感兴趣的文章
[LeetCode By Python]118. Pascal's Triangle
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
[LeetCode By Python]122. Best Time to Buy and Sell Stock II
查看>>
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>
[LeetCode By MYSQL] Combine Two Tables
查看>>
Android下调用收发短信邮件等(转载)
查看>>
Android中电池信息(Battery information)的取得
查看>>
SVN客户端命令详解
查看>>
Android/Linux 内存监视
查看>>
Linux系统信息查看
查看>>
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
Android之TelephonyManager类的方法详解
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>