- 博客(53)
- 资源 (3)
- 收藏
- 关注
原创 卡尔曼滤波
import randomimport matplotlib.pyplot as pltx_last = 0;p_last = 0.05; // 初始值不能为0,值大小无所谓,会随着迭代次数增加,值的变化和初始值无关。Q = 0.01; //预测误差,越大表示信任测量值,结果会更加随测量值的波动而波动。 越小表示信任预测模型,波动会更小。 //这个值一般设置小一点,否...
2019-04-10 17:10:12
304
原创 信息熵
熵理解问对事物不确定性的一个度量,简单来说,就是熵越大,我们对他越不确定。如果一件事情是100%确定无疑的,那么我们认为这件事情的熵为0。所以:1, 明天太阳会从东边升起。 这件事100%是真的,我们说熵为0.2,明天太阳从西边升起。这件事情0%是真的,我们说熵为0.(可以看出,熵是对不确定性的度量,而事情本身是真是假无关。)既然是越不确定,熵越大,那么什么情况熵会最大?我们来看看...
2019-04-09 14:56:25
681
原创 c++ 防坑记
1,vector中的item的地址不要传给外面,当vector增加一个item,可能引起vectore重新分配内存。这样前期如果你把item的地址给外面,外面得到的指针就完全失效了。正确的方法是告诉外面vector的下标,而不是item的地址。这样即使item的地址改变了,通过下标去实时获取到正确的地址。...
2019-04-04 17:03:54
186
原创 android中handler的理解
如何理解handler处理多线程问题。多线程问题,简单来说就是, activity运行在并且已经运行在了ui thread。如果我们有个耗时的工作(比如文件读取,从网络下载数据等等工作),我们不能让这个耗时的工作直接在ui thread中调用,而是通过开一个work thread, 在work thread中完成耗时工作。工作流程类似:在ui thread中运行,有个耗时工作,开wor...
2019-04-04 16:42:30
233
转载 android开源学习
https://blog.youkuaiyun.com/ming_147/article/details/80360132
2019-04-04 15:40:37
129
原创 理解sobel算子
一个函数的导数 dx = delt x / delt v, 就是x方向上的增量和 v方向增量的比值。(v方向我随便取的一个变量,主要是为了区别出一个方向), 把这个概念转换到图像上面,就是 像素值的增量 和 坐标方向增量的比值。(坐标方向我们总是取下一个像素,所以这个方向的增量可以认为总是为1,最终,像素值的增量就是导数,也叫做梯度)举例而言,有下面9个像素的图片:a b ...
2019-03-26 11:23:50
423
原创 收集的一些有意思的c/c++代码
1,需要连续调用多个函数,任一个函数失败,直接返回失败。 下面的写法可以避免写很多if。{ bool result(true); result = result && getLinkId(link); result = result && getStartEndCoords(start, end); res...
2014-09-29 16:42:52
2610
翻译 数据划分
这一章讲解如何把地理数据映射到NDS database。我们首先需要了解NDS的坐标系统如何编码,tile如何划分。1, WGS84 和 EGM96 nds使用的是WGS84坐标系统(the World Geodetic System dating from 1984),就是平常我们说的经纬度。当我们说一个具体的位置的时候,就说这个问题位置的经度是多少,纬度是多少,这样就可以唯
2014-07-28 10:59:58
806
翻译 整体结构
介绍下Navigation Data Standard (so-called NDS databases)的架构,和其最重要的一些概念。,1,NDS Database and its Interfaces NDS的数据可以称为是一个database,是被其标准文档所规范好的标准database。作为一个标准化的database,也就是你生产出来的NDS和别人生产出来的NDS,数
2014-07-28 10:58:27
854
1
翻译 r-tree
本文是根据篇讲解Full Text Search的文档整理的。 在导航需求中,有对目的地的全文查询。我们可以把一个地址看成是由多个word组成的document。这个document的结构可以是这样(state,city,street),举个例子来说(江苏,南京,人民路)。我们可以用标准的全文检索系统来存储这种docment,即 inverted indexes(倒排索引)。比如s
2014-07-28 10:57:20
186
原创 文章1
Navigation Data Standard - Format Specification用到的4个table表格。前2个table的内容由数据提供者来定义。并不是全球统一为一个。下面举的例子为样本数据中的内容。 1,SelectionMetadataTable:由数据提供者定义,每个region有一个这个表。描述了selection criterion的含义。name
2014-07-28 10:55:49
302
原创 开了个工程,供自己学习使用
一直想自己开个工程,在github上创建了一个代码库,慢慢写些东西上传。 git@github.com:withc/nav-data.git 这个代码是重写search模块的数据编译。由于受到上下游的限制,特别是compiler部分,不想改动太大而影响上下游的变动。 以后会把这个项目会独立出来,上下游将重新设计,包括psf的设计,engien的编写等等。
2014-03-18 16:45:34
577
原创 python学习心得
最近开始学习python,感觉python和c,java,perl有些不同,现记录于此。python的变量都是应用,并且变量本身没有类型。比如a = 3a = 'spam'a = 1.23a = myclass()我们可以把不同的类型的对象,赋值给a,a都能接受。这点和其他语言很不一样,这点也为写python代码一些指导。a是一个变量,a本身没有类型说明,所有类型的
2014-02-20 12:07:16
733
原创 vim的基本够用操作
vim作为linux下的老牌编辑工具,有时候也不得不学习下。到目前为止,我基本上可以避免使用vim来编辑linux下的文本。如果本机是linux,当然装一个比如gedit这种编辑工具。如果是远程,都是通过samba共享,然后就可以像在本机一样进行编辑。不过这也不是长久之计。vim觉得还是要学习下。 最近通过putty链接到远程linux服务器时,想改下linux的一些文本文件,发
2014-02-13 10:15:30
608
原创 clucene(一):总体结构
先了解下文件结构:一个完整的数据集合对应到一个目录。也就是说,如果你想打开一个数据集合,传入一个目录名就可以了,这个目录下面所有的文件是一个整体。一个数据集合可以分成多个segment,一个segment对应了多个文件(这些文件的文件名相同,但是文件扩展名不同,也就是文件名表示这个文件属于哪个segement,扩展名表示这个文件存储了啥内容)。segment的文件名有固定的命名规则。一般从
2014-02-10 16:20:15
859
原创 准备写些clucene笔记
最近在看clucene的源码(不太会java,还是看c++的代码入门比较快。并且c++版本要简单些)。打算写点笔记记录下。 clucene最新的版本是2.3版本,我开始从这个版本看,代码优点多,不太好投入进去。先找了个0.8版本的clucene,这个版本果然简单多了,同时bug也比较多。这也是一个读源码的一个经验。从最早的一个版本来入门,速度上会快很多。 用vs2
2014-02-08 15:51:23
780
原创 vs2005字体设置的背景色的设置问题
终于找到问题所在了。同学们如果想把背景色设置成其他颜色,通过菜单上面的 tools->options. 在左边的框里面, Environment的子选项中选择 Fonts and Colors右边框就是要设置的具体东西了。 先选择 font 为 “Courier New”这种字体,这个字体的优点就是所有字符的宽度都是一样宽,这样非常好对齐代码。再为Display items中选择
2014-01-28 15:51:59
2558
原创 检索模块的设计
在导航系统中,检索主要应用于poi的检索和address的检索,并且对检索的需求定义也是变化多段,不同的区域需求也是不尽相同。如何设计一个好的检索的模块,使之能够应用于各种变化的需求也是非常重要。 检索的需求是变化最多的,即使谈好的需求,到最后都会稍微的改变行为,有时改完了又要改回来,最后是2个不同的行为都需要,外面可以通过参数来选择。所以灵活的检索设计是非常有必要的。
2014-01-27 09:49:50
1448
原创 edit distance---计算2个单词之间的距离
在模糊匹配的时候,即使用户输入的单词错了,我们最好也能返回一些候选的结果给用户。这样就少不了需要一个算法来计算2个单词之间的距离。距离越近,我们认为这个单词更符合用户的输入。 计算2个单词之间的距离可以参考: http://en.wikipedia.org/wiki/Edit_distance edit distance定义成:把一个单词,修改成另一个单词需要进
2014-01-26 17:50:00
1576
原创 TMC介绍
TMC由3个元素组成:一个叫location(类似于一个路口), 一个叫path(类似于从一个路口到下一个路口经过的一段道路)。location可以分成point location, line location和area location。path都有方向,分为positive direction 和 negative direction。一般从西到东和从南到北我们定义为正方向,反之为反方
2014-01-22 16:28:23
1778
原创 设计模式--Prototype(原型)
Prototype为一种创建型的设计模式。它定义了如何取创建对象。它在实现的时候,代码和factory区别不大。个人认为,所有的代码实现都查不多,就是继承和组合。 通过一个具体的例子可以导出为啥需要prototype的模式。只要不嫌麻烦,factory模式就可以完全满足所有的创建对象需求,但是针对特定的例子里面,factory显得太通用而效率不高。所以才有其他的创建型的模式出来。
2013-10-15 17:49:11
679
原创 数据分块:论导航路网数据如何分块
路网数据总是按照一块一块的小面积数据来存储,每一块称为一个网格,一个网格的数据相对较小,在使用的时候,按网格为单位对路网数据进行读取。我们如何对整个路网数据进行分块,这里分为2个方向:1,规整网格,即每个网格的面积大小都是一样的。这样考虑是网格的查找非常方便。这时候,我们按照一定的规则对每个网格进行编号。由于网格是规整的,网格号本身就能知道这个网格的具体包含的坐标范围,可以说查找的时间复杂度为
2013-09-11 11:00:38
1700
原创 数据分层:论导航中路网数据如何提层
在导航中,路网数据是最重要的数据类型。在实际的使用过程中,我们总是会对路网数据进行分层,高层的数据会更少,留下的道路也更重要。对长距离路径规划,使用高层路网数据可以加快数据的加载和路径的演算。同时,在大比例尺地图显示模块中,只显示最重要的道路,既能加快显示速度,也符合用户习惯。合理有效的分层可以大大提高导航软件的品质。 分层考虑的2个方面: 1,道路的等级是分层的时候
2013-09-05 14:15:35
1421
原创 再谈数据压缩
这里想再谈谈在存储导航数据中,用到的一些实用的压缩技巧。数据存储的时候,我们总是会按照一定的单元来存储。类似于一个一个的block,读取的时候,也是以block为单位进行读取。我们假设,1000条某种记录存储为一个block,对每条记录赋一个id(从0开始计数),我们可以通过id就可以读取到对应的记录信息。如何以最小的size来存储这1000条记录?1,如果记录是定长,比如每条记录为5
2013-09-03 08:55:01
791
1
原创 bash学习要点
学习各种脚本,linux下开发,这些东西都离不开bash的学习。下面列了些bash在学习过程中的一些值得注意的要点。关于变量:1,bash中可以使用变量名,我们可以把变量名的解析看成字符串的替换,因为bash不是强类型语言。比如我们定义个变量: var=54 其中变量名为var,它代表了字符串“54”,而不是一个整数54。bash中变量没有
2013-08-12 09:56:50
813
翻译 R-tree based Full Text Search(基于R-tree实现的全文检索)
本文是根据NDS中的一篇讲解Full Text Search的文档整理的。 在导航需求中,有对目的地的全文查询。我们可以把一个地址看成是由多个word组成的document。这个document的结构可以是这样(state,city,street),举个例子来说(江苏,南京,人民路)。我们可以用标准的全文检索系统来存储这种docment,即 inverted indexes(倒排索
2013-07-30 10:37:39
537
2
翻译 Partitioning of Geographic Data(数据划分)
这一章讲解如何把地理数据映射到NDS database。我们首先需要了解NDS的坐标系统如何编码,tile如何划分。1, WGS84 和 EGM962, Coding of Coordinate(坐标编码)3,Tiling Scheme(网格划分) 3.1 Tile and Levels 3.2 Tile and Clipping 3.3 Tile C
2013-07-29 11:14:27
3269
原创 sqlite中fts的数据结构说明:segment leaf nodes
注释文件的说明,**** Segment leaf nodes ****** Segment leaf nodes store terms and doclists, ordered by term. Leaf** nodes are written using LeafWriter, and read using LeafReader (to** iterate through
2013-07-16 11:29:00
1241
翻译 Architecture of NDS(Navigation Data Standard)
介绍下Navigation Data Standard (so-called NDS databases)的架构,和其最重要的一些概念。,1,NDS Database and its Interfaces NDS的数据可以称为是一个database,是被其标准文档所规范好的标准database。作为一个标准化的database,也就是你生产出来的NDS和别人生产出来的NDS,数
2013-07-15 11:32:55
1773
原创 设计模式6
Template Method模式我们讲的前面很多模式的思路都是使用组合,而不用继承。并且也提到了一个设计原则“优先使用组合”。但是这个模式就是一个使用继承来解决问题的思路。毕竟,继承也不是一无是处。在有些系统中,一个事务的完成需要通过一系列的步骤,就是第一步干什么,第二步干什么。这个步骤的序列是固定的(就是行业标准流程),并且在将来也不会改变,也没必要改变。但是每一步的具体实现对不同平台
2013-07-15 09:54:33
527
原创 设计模式5
Decorator模式我觉得这个模式有点绕。需要很仔细的来分清其中的继承关系。Decorator模式的使用场景:当你要描述一个东西,比如说“人”这个东西,你回构建一个人的class,它包括很多人的属性,比如身高,体重,性别,年龄等等,你还有很多的施加于“人”上面的方法,比如吃饭,睡觉,跑步等等。但是,你可能希望给“人”添加一些额外的东西,就像游戏中的人物一样,他是带装备,比如“黄金盔甲”,
2013-07-15 09:53:52
590
原创 设计模式4
Observer模式这个模式理解起来应该算很简单。定义了一种1对多的关系。当其中“1”描述的对象变化时,“多”描述的多个对象都能得到通知并且被自动更新。我们把“1”称为subject,“多”称为observer。如何让他们之间发生关系。使用组合。在subject中,我们拥有一个observer引用的列表,和3个成员函数,addObserver( observer* ), 添加一
2013-07-15 09:53:31
506
原创 设计模式3
strategy模式这个模式和bridge模式很类似。我说的类似是具体实现上的类似,都是把算法组合为类的成员,但是背后考虑问题的思路确不同。所以看很多介绍书籍上举出的例子,你会觉得都可以来说明这2种模式,还是再强调,它们背后的思路完全不同。具体而言,bridge模式中,把模块分为抽象部分和实现部分,这2部分都可能会发生变化,把他们抽象出来后,可以把M*N种变化变成M+N种变化。
2013-07-15 09:52:37
457
原创 设计模式2
Bridge模式四人帮的说法“将抽象部分和它的实现部分分离,使他们可以独立地变化”理解起来就是,有个模块A,能够把它分割成2个独立的概念,一个是它的抽象部分,一个是它的具体实现部分,这2个部分可以独立的改变。就是说如果有了新的实现算法,抽象部分可以不用感知到这种变化,这也是抽象部分就不需要改变;反过来,抽象部分有了变化,对于实现部分也不用去关心这种变化,从而实现部分也不需要变化。具体例
2013-07-15 09:51:39
512
clucene-core-2.3.3.4 cmake可生产vs2005工程
2013-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人