| by msbeta | No comments

[定位原理揭秘第二期] GPS定位实现原理解析

什么是GPS定位?

我们手机上的GPS定位,是卫星定位的一种约定俗成的说法,卫星定位的全称来说应该叫做GNSS(Global Navigation Satellite System)定位。GPS只是GNSS的一种,是美国部署的一套全球卫星系统。这套系统给个简单的描述,就是:

1.天上有24颗卫星在不断的绕地球运动;

2.每颗卫星不断发送“我是谁,我在哪里”的信号;

3.接收机(比如手机GPS芯片)收到了多颗卫星发出的这样的信号,根据信号传播时间推算出离卫星的距离,进而解出了接收机自己的位置,顺便可以得到当前准确时间。

关于GPS基本原理问答

如果对这[……]

继续阅读

Read More
| by msbeta | No comments

[定位原理揭秘第一期]我们经常用到的手机定位的原理到底是什么?

1.手机定位的价值

目前智能手机的使用已经越来越普遍,手机定位也是手机上的一个核心基础功能。举一个常见的应用如叫车,司机需要知道你在哪里,同时打车软件也需要基于司机和乘客的位置规划一条路线,让司机更高效的行驶到用户这里。这就是典型的定位服务的应用。当然,除去这种应用,用户位置本身的展示,也是地图产品中不可缺少的。

那么问题就来了,作为app的用户,你可能会好奇这个app是如何知道你的位置;而作为app的开发者,是如何在程序中得到设备当前的准确位置的呢?

这个问题说来话长,我们还是先从定位原理上来解释吧!

2.可用于无线定位的信号

很显然,一个功能正常的手机,总[……]

继续阅读

Read More
| by msbeta | 1 comment

Viterbi算法及其在隐马尔可夫模型(HMM)中的应用

1.Viterbi算法定义

1.1 算法输入

观察值域空间为:$O=\{O_1, O_2, …, O_N\}$

状态空间为:$S=\{S_1, S_2, …, S_K\}$

观察值序列为:$Y=\{Y_1, Y_2, …, Y_T\}$

$A_{K \times K}$为从状态转移矩阵, 其中$A_{ij}$是从状态$S_i$转移到状态$S_j$的概率;

$B_{K \times N}$为Emission Matrix,其中$B_{ij}$是从状态$S_i$观测到$O_j$的概率。

初始概率数组:$\pi=\{\pi_0, \pi_1, .[……]

继续阅读

Read More
| by msbeta | No comments

从零开始学习自动驾驶系统(五)-扩展卡尔曼滤波Extend Kalman Filter

1.泰勒级数展开

如果函数$f(x)$在点$x=x_0$具有任意阶导数,则

$$\begin{aligned}f(x)=&\sum_{n=0}^{\infty} \frac{f^{(n)}(x_0)}{n!} (x – x_0)^n \\=& f(x_0) + f(x_0)^{\prime}(x-x_0) + \frac{f^{\prime \prime}(x_0)}{2!}(x-x_0)^2  + … +&nbs[……]

继续阅读

Read More
| by msbeta | No comments

如何在Ubuntu 18.04中安装Sublime Text 3

Sublime Text是Web和软件开发中最常使用的文本和源代码编辑器。它不仅运行速度快,而且有很多强大的功能。在本教程中,我们将展示如何在Ubuntu 18.04系统中安装Sublime Text 3,这些步骤适用于所有基于Debian的操作系统。

Installing Sublime Text on Ubuntu

步骤一:更新APT Package List,安装相关依赖;

步骤二:导入Repository的GPG key; 

添加Sublime Text的APT repository;

步骤三: 更新apt源,安装Sublime Text 3[……]

继续阅读

Read More
| by msbeta | 1 comment

python的lambda匿名函数的变量绑定问题

lambda的匿名函数定义简单函数非常方便。但是在实际应用中因为变量的绑定原因,总是出现一系列莫名奇妙的问题。考虑下面的代码:

现在a(10)和b(10)的结果应该是多少呢?如果你的答案也是20和30,说明对lambda的理解同样不够深刻。

这里的问题在于x是一个自由变量,在运行时候才进行绑定,而不是在定义时候绑定。如果希望匿名函数可以在定义时候绑定变量,并且保持值不变,可以将改之作为默认参数实现。

[……]

继续阅读

Read More
| by msbeta | No comments

python中如何定义带有默认参数的函数

直观的,带有默认参数的python函数非常简单:

1) 在定义中为参数赋值;

2) 带默认值的参数出现在函数的最后;

3) 如果默认值是可变容器(如列表、集合、字典等);

如下代码所示:

注意:

1、默认参数的绑定发生在函数定义的时候。

2、赋给默认参数的值应该为不可变对象。如None、True、False、数字、或者字符串常量等;

可以看到默认值在函数体之外被修改,导致之后的函数调用对默认值产生持续的影响。

所以函数的参数的默认值的应该为不可变对象。

3、默认参数的None值的处理

上述的代码的问题在于,尽管N[……]

继续阅读

Read More
| by msbeta | No comments

python实现接受任意数量参数的函数

问题:

如何用python编写一个可以接受任意数量参数的函数。

解决方案:

实现Python接受任意个数参数的函数,在形式上比较简单,就是在参数前面加上一个星号(*)即可。

其中nuts是一个元组,它包含了所有传递过来的位置参数

如果要接受任意数量的关键字参数,可以使用**开头的参数。

所有以*号开头的参数,只能作为最后一个位置参数出现,以**开头的参数只能作为最后一个参数出现。以*号打头的参数之后的参数都会被作为关键字参数处理。

Keyword-only参数是一种提高代码可读性的好方法。如下例所示:

如果不了解recv的函数原型,[……]

继续阅读

Read More
| by msbeta | No comments

Python中单引号、双引号和三引号的差异

1.单引号跟双引号表示字符串字面常量,这跟C++中的语法规范是相同的。

单引号和双引号在表示字面常量的时候,二者是完全等价的。

2.当用单引号包起来的字符串里包含双引号的时候, 不需要使用转义符(\); 反之,当用双引号包起来的字符串中包含单引号的时候,也不需要使用转移字符;

3.三引号是python所特有的相对于单引号和双引号,它可以保留内部的所有字符,包括回车换行符等

三引号有两种形式: ”’string content”’或者”””string content”””。

正是由于三引号的这种特性,python中常用三引号做注释。

[……]

继续阅读

Read More
| by msbeta | No comments

Numpy中Array和Matrix的矩阵乘法以及矩阵运算的区别

在Numpy中matrix必须是二维的,array可以是任意多维的,matrix是array的一个分支,拥有array的所有特性。

1、初始化

可以看到,np.asmatrix会将np.array转化成二维数组。np.mat和np.matrix的区别在于,如果输入本身就是一个矩阵,则np.mat不会对该矩阵make a copy,仅仅是创建了一个新的引用,即np.mat相当于np.matrix(data, copy = False)。

2、转置运算

matrix和array都可以在object后加.T得到其转置矩阵。

可以看到,一维数组的转置与自身相同。可[……]

继续阅读

Read More