线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导

2023-05-16

LDA算法概述:
线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。线性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。

说白了就是想让数据降维之后, 同一类的数据靠紧一点, 不同类的离远一点.

为什么要用LDA

既然PCA已经是一种表现很好的数据降维的方法,LDA也是一种将数据降维的方法。那为什么还要有LDA呢?
PCA是一种无监督的数据降维方法,与之不同的是LDA是一种有监督的数据降维方法。我们知道即使在训练样本上,我们提供了类别标签,在使用PCA模型的时候,我们是不利用类别标签的,而LDA在进行数据降维的时候是利用数据的类别标签提供的信息的。
从几何的角度来看,PCA和LDA都是讲数据投影到新的相互正交的坐标轴上。只不过在投影的过程中他们使用的约束是不同的,也可以说目标是不同的。PCA是将数据投影到方差最大的几个相互正交的方向上,以期待保留最多的样本信息。样本的方差越大表示样本的多样性越好,在训练模型的时候,我们当然希望数据的差别越大越好。否则即使样本很多但是他们彼此相似或者相同,提供的样本信息将相同,相当于只有很少的样本提供信息是有用的。样本信息不足将导致模型性能不够理想。这就是PCA降维的目标:将数据投影到方差最大的几个相互正交的方向上。这种约束有时候很有用,比如在下面这个例子:
在这里插入图片描述
对于这个样本集我们可以将数据投影到x轴或者y轴,但这都不是最佳的投影方向,因为这两个方向都不能最好地反映数据的分布。很明显还存在最佳的方向可以描述数据的分布趋势,那就是图中红色直线所在的方向。也是数据样本做投影,方差最大的方向。向这个方向做投影,投影后数据的方差最大,数据保留的信息最多。
但是,对于另外的一些不同分布的数据集,PCA的这个投影后方差最大的目标就不太合适了。比如对于下面图片中的数据集:
在这里插入图片描述
针对这个数据集,如果同样选择使用PCA,选择方差最大的方向作为投影方向,来对数据进行降维。那么PCA选出的最佳投影方向,将是图中红色直线所示的方向。这样做投影确实方差最大,但是是不是有其他问题。聪明的你一定发现了,这样做投影之后两类数据样本将混合在一起,将不再线性可分,甚至是不可分的。这对我们来说简直就是地狱,本来线性可分的样本被我们亲手变得不再可分。
帅气英俊的你也一定发现了,图中还有一条耀眼的黄色直线,向这条直线做投影即能使数据降维,同时还能保证两类数据仍然是线性可分的。上面的这个数据集如果使用LDA降维,找出的投影方向就是黄色直线所在的方向。
这其实就是LDA的思想,或者说LDA降维的目标:将带有标签的数据降维,投影到低维空间同时满足三个条件:
尽可能多地保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的的方向)。
寻找使样本尽可能好分的最佳投影方向。
投影后使得同类样本尽可能近,不同类样本尽可能远。
其实第二个和第三个条件是基本等价的,我们很容易想到,使样本尽可能好分的投影方向,就是要使投影后使得同类样本尽可能近,不同类样本尽可能远。
上面大致讲解的LDA的基本思想,以及与PCA的不同,下面就来介绍一下LDA模型。

符号说明:

C : 一 个 空 间 一 共 有 C 个 类 , C:一个空间一共有C个类, C:C,

x ∶ 表 示 训 练 样 本 , 使 用 列 向 量 表 示 x∶表示训练样本,使用列向量表示 x使

x j ( i ) : 第 i 个 类 的 第 j 个 样 本 , 每 个 x j ( i ) 是 一 个 m 行 1 列 的 矩 阵 , x_j^{(i)}:第i个类的第j个样本, 每个x_j^{(i)}是一个m行1列的矩阵, xj(i):ij,xj(i)m1

M i ∶ 表 示 第 i 类 训 练 样 本 的 数 目 ( i = 1 , 2 , … , C ) M_i ∶表示第i类训练样本的数目(i=1,2,…,C) Miii=1,2,,C

M = ∑ i = 1 C M i ∶ 表 示 训 练 样 本 的 总 数 目 M=\sum_{i=1}^CM_i ∶表示训练样本的总数目 M=i=1CMi

μ i = 1 M i ∑ j = 1 M i X j ( i ) ∶ 表 示 第 i 类 训 练 样 本 的 均 值 ( i = 1 , 2 , … , C ) \mu_i=\frac1{M_i}\sum_{j=1}^{M_i}X_j^{(i)}∶表示第i类训练样本的均值 (i=1,2,…,C) μi=Mi1j=1MiXj(i)ii=1,2,,C

μ = 1 M ∑ i = 1 M x i ∶ 表 示 全 部 训 练 样 本 的 均 值 \mu=\frac1{M}\sum_{i=1}^M x_i ∶表示全部训练样本的均值 μ=M1i=1Mxi

w ∶ 投 影 直 线 w∶ 投影直线 w线

Σ i = ∑ j = 1 M i ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T ∶ 表 示 i 类 样 本 的 协 方 差 矩 阵 \Sigma_i =\sum_{j=1}^{M_i}(x_j^{(i)}−\mu_i)(x_j^{(i)}−\mu_i)^T∶表示i类样本的协方差矩阵 Σi=j=1Mi(xj(i)μi)(xj(i)μi)Ti

p ( i ) ∶ 表 示 第 i 类 的 出 现 概 率 p(i) ∶表示第i类的出现概率 p(i)i

p ( i , j ) ∶ 表 示 x j ( i ) 的 出 现 概 率 p(i,j) ∶表示x_j^{(i)}的出现概率 p(i,j)xj(i)

二类LDA原理:

由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量 w w w,则对任意一个样本 x i x_i xi,它在直线 w w w的投影为 w T x i w^T x_i wTxi,对于我们的两个类别的中心点 μ 1 μ_1 μ1, μ 2 μ_2 μ2,在直线 w w w的投影为 w T μ 1 w^T μ_1 wTμ1 w T μ 2 w^T μ_2 wTμ2。由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ∣ ∣ w T μ 1 − w T μ 2 ∣ ∣ 2 2 ||w^T μ_1-w^T μ_2 ||_2^2 wTμ1wTμ222,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差 w T Σ 1 w w^T Σ_1 w wTΣ1w w T Σ 2 w w^T Σ_2 w wTΣ2w尽可能的小,即最小化 w T Σ 1 w + w T Σ 2 w w^T Σ_1 w+w^T Σ_2 w wTΣ1w+wTΣ2w。同时考虑二者,则可得到欲最大化的目标
J = ∣ ∣ w T μ 1 − w T μ 2 ∣ ∣ 2 2 w T Σ 1 w + w T Σ 2 w = w T ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T w w T ( Σ 1 + Σ 2 ) w (1) J=\frac{||w^T μ_1-w^T μ_2 ||_2^2}{w^T Σ_1 w+w^T Σ_2 w}=\frac{w^T (μ_1-μ_2 ) (μ_1-μ_2 )^T w}{w^T (Σ_1+Σ_2 )w} \tag1 J=wTΣ1w+wTΣ2wwTμ1wTμ222=wT(Σ1+Σ2)wwT(μ1μ2)(μ1μ2)Tw(1)

类内散度矩阵:

S W = Σ 1 + Σ 2 = ∑ i = 1 M 1 ( x i ( 1 ) − μ 1 ) ( x i ( 1 ) − μ 1 ) T + ∑ i = 1 M 2 ( x i ( 2 ) − μ 2 ) ( x i ( 2 ) − μ 2 ) T (2) S_W=Σ_1+Σ_2= ∑_{i=1}^{M_1}(x_i^{(1)}-μ_1 ) (x_i^{(1)}-μ_1)^T+ ∑_{i=1}^{M_2}(x_i^{(2)}-μ_2 ) (x_i^{(2)}-μ_2 )^T \tag2 SW=Σ1+Σ2=i=1M1(xi(1)μ1)(xi(1)μ1)T+i=1M2(xi(2)μ2)(xi(2)μ2)T(2)

类间散度矩阵:

S B = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T , (3) S_B=(μ_1-μ_2 ) (μ_1-μ_2 )^T,\tag3 SB=(μ1μ2)(μ1μ2)T,(3)
则欲最大化的目标可重写为
J = w T S B w w T S W w (4) J=\frac{w^T S_B w}{w^T S_W w}\tag4 J=wTSWwwTSBw(4)
不失一般性,令 w T S W w = 1 w^T S_W w=1 wTSWw=1,则优化目标等价于
max ⁡ w ⁡ w T S B w s . t . w T S W w = 1 (5) \max_w⁡ \quad w^T S_B w \qquad s.t. \quad w^T S_W w=1 \tag5 wmaxwTSBws.t.wTSWw=1(5)
由拉格朗日乘子法,上式等价于
S B w = λ S W w , (6) S_B w=λS_W w,\tag6 SBw=λSWw,(6)
其中λ是拉格朗日乘子. 注意到 S B w S_B w SBw的方向恒为 μ 1 − μ 2 μ_1-μ_2 μ1μ2, 不妨令
S B w = λ ( μ 1 − μ 2 ) , (7) S_B w=λ(μ_1-μ_2 ),\tag7 SBw=λ(μ1μ2),(7)
代入式(6)中即得
w = S W − 1 ( μ 1 − μ 2 ) . (8) w=S_W^{-1} (μ_1-μ_2).\tag8 w=SW1(μ1μ2).(8)
考虑到数值解的稳定性,在实践中通常是对 S W S_W SW进行奇异值分解,即 S W = U Σ V T S_W=UΣV^T SW=UΣVT,这里 Σ Σ Σ是一个实对称矩阵,其对角线上的元素是 S W S_W SW的奇异值,然后再由 S W − 1 = V Σ − 1 U T S_W^{-1}=VΣ^{-1}U^T SW1=VΣ1UT得到 S W − 1 S_W^{-1} SW1,或者是令 S W = S W + γ I S_W=S_W+γI SW=SW+γI γ γ γ是一个特别小的数,使得 S W S_W SW可逆也是一种方法.

多类LDA原理:

在多类问题时,将 D D D维的向量 x x x投影到 d < D d<D d<D维的 y y y.投影方程为:
y = W T x (9) y=W^T x\tag9 y=WTx(9)
这里 W W W是一个投影矩阵,每一个列向量 w i w_i wi表示一个投影方向.
设数据集合为 X = { x 1 ( 1 ) , x 2 ( 1 ) , … , x M 1 ( 1 ) , x 1 ( 2 ) , … x M C ( C ) } X=\lbrace x_1^{(1)},x_2^{(1)},…,x_{M_1}^{(1)},x_1^{(2)},…x_{M_C}^{(C)}\rbrace X={x1(1)x2(1)xM1(1)x1(2)xMC(C)}. 在多类的时候,过程与上面一样,不过优化的目标函数需要更改一下.

类内散度矩阵与二类时的定义一样,如下表示:

S W = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T (10) S_W=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \tag{10} SW=i=1Cj=1Mip(i,j)(xj(i)μi)(xj(i)μi)T(10)

类间散度矩阵根据定义以及推导,得

S B = 1 2 ∑ i = 1 C ∑ j = 1 C p ( i ) p ( j ) ( μ i − μ j ) ( μ i − μ j ) T = 1 2 ∑ i = 1 C ∑ j = 1 C p ( i ) p ( j ) ( μ i μ i T − μ i μ j T − μ j μ i T + μ j μ j T ) = 1 2 ∑ i = 1 C p ( i ) μ i μ i T ∑ j = 1 C p ( j ) − p ( i ) μ i ∑ j = 1 C p ( j ) μ j T − p ( i ) ( ∑ j = 1 C p ( j ) μ j ) μ i T − p ( i ) ∑ j = 1 C p ( j ) μ j μ j T = 1 2 ∑ i = 1 C p ( i ) μ i μ i T − p ( i ) μ i μ T − p ( i ) μ μ i T − p ( i ) ∑ j = 1 C p ( j ) μ j μ j T = 1 2 ∑ i = 1 C p ( i ) μ i μ i T − μ μ T − μ μ T − ∑ j = 1 C p ( j ) μ j μ j T = ∑ i = 1 C p ( i ) ( μ i μ i T − μ μ T ) = ∑ i = 1 C p ( i ) ( μ i μ i T − μ μ T ) + 2 ∑ i = 1 C p ( i ) μ μ T − ∑ i = 1 C p ( i ) μ i μ T − ∑ i = 1 C p ( i ) μ μ i T = ∑ i = 1 C p ( i ) ( μ i μ i T − μ i μ T − μ μ i T + μ μ T ) = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T \begin{aligned} S_B&=\frac12 ∑_{i=1}^C∑_{j=1}^Cp(i)p(j)(μ_i-μ_j ) (μ_i-μ_j )^T \\ &=\frac12 ∑_{i=1}^C∑_{j=1}^Cp(i)p(j)(μ_i μ_i^T-μ_i μ_j^T-μ_j μ_i^T+μ_j μ_j^T ) \\ &=\frac12 ∑_{i=1}^C{p(i) μ_i μ_i^T ∑_{j=1}^Cp(j)-p(i) μ_i ∑_{j=1}^Cp(j)μ_j^T- p(i)(∑_{j=1}^Cp(j)μ_j)μ_i^T- p(i) ∑_{j=1}^Cp(j)μ_j μ_j^T }\\ &=\frac12 ∑_{i=1}^C{p(i) μ_i μ_i^T-p(i) μ_i μ^T-p(i)μμ_i^T-p(i) ∑_{j=1}^Cp(j)μ_j μ_j^T }\\ &=\frac12 {∑_{i=1}^Cp(i) μ_i μ_i^T-μμ^T-μμ^T -∑_{j=1}^Cp(j)μ_j μ_j^T}\\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μμ^T) \\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μμ^T)+2∑_{i=1}^Cp(i)μμ^T-∑_{i=1}^Cp(i) μ_i μ^T- ∑_{i=1}^Cp(i)μμ_i^T \\ &=∑_{i=1}^Cp(i) (μ_i μ_i^T-μ_i μ^T-μμ_i^T+μμ^T)\\ &=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \end{aligned} SB=21i=1Cj=1Cp(i)p(j)(μiμj)(μiμj)T=21i=1Cj=1Cp(i)p(j)(μiμiTμiμjTμjμiT+μjμjT)=21i=1Cp(i)μiμiTj=1Cp(j)p(i)μij=1Cp(j)μjTp(i)(j=1Cp(j)μj)μiTp(i)j=1Cp(j)μjμjT=21i=1Cp(i)μiμiTp(i)μiμTp(i)μμiTp(i)j=1Cp(j)μjμjT=21i=1Cp(i)μiμiTμμTμμTj=1Cp(j)μjμjT=i=1Cp(i)(μiμiTμμT)=i=1Cp(i)(μiμiTμμT)+2i=1Cp(i)μμTi=1Cp(i)μiμTi=1Cp(i)μμiT=i=1Cp(i)(μiμiTμiμTμμiT+μμT)=i=1Cp(i)(μiμ)(μiμ)T
即“类间散度矩阵”可表示为:
S B = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T (11) S_B=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \tag{11} SB=i=1Cp(i)(μiμ)(μiμ)T(11)
同时也可以定义“总体散度矩阵” S T S_T ST,表示为:
S T = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ ) ( x j ( i ) − μ ) T (12) S_T=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T \tag{12} ST=i=1Cj=1Mip(i,j)(xj(i)μ)(xj(i)μ)T(12)
“类间散度矩阵”也可通过“总体散度矩阵”与“类内散度矩阵”的差值求出,即:
S B = S T − S W = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ ) ( x j ( i ) − μ ) T − ∑ i = 1 C ∑ j = 1 M i p ( i , j ) ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T = ∑ i = 1 C ∑ j = 1 M i p ( i , j ) { ( x j ( i ) − μ ) ( x j ( i ) − μ ) T − ( x j ( i ) − μ i ) ( x j ( i ) − μ i ) T } = ∑ i = 1 C { − p ( i ) μ i μ T − p ( i ) μ μ i T + p ( i ) μ μ T + p ( i ) μ i μ i T } = ∑ i = 1 C p ( i ) ( μ i − μ ) ( μ i − μ ) T \begin{aligned} S_B&=S_T-S_W\\ &=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T -∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \\ &=∑_{i=1}^C∑_{j=1}^{M_i}p(i,j)\lbrace(x_j^{(i)}-μ) (x_j^{(i)}-μ)^T-(x_j^{(i)}-μ_i ) (x_j^{(i)}-μ_i )^T \rbrace \\ &=∑_{i=1}^C\lbrace -p(i)μ_i μ^T- p(i)μμ_i^T+p(i)μμ^T+p(i)μ_i μ_i^T\rbrace \\ &=∑_{i=1}^Cp(i)(μ_i-μ) (μ_i-μ)^T \end{aligned} SB=STSW=i=1Cj=1Mip(i,j)(xj(i)μ)(xj(i)μ)Ti=1Cj=1Mip(i,j)(xj(i)μi)(xj(i)μi)T=i=1Cj=1Mip(i,j){(xj(i)μ)(xj(i)μ)T(xj(i)μi)(xj(i)μi)T}=i=1C{p(i)μiμTp(i)μμiT+p(i)μμT+p(i)μiμiT}=i=1Cp(i)(μiμ)(μiμ)T
得到 S B S_B SB,进一步可以得到目标函数:
J = ∣ W T S B W ∣ ∣ W T S W W ∣ (13) J=\frac{|W^T S_B W|}{|W^T S_W W|} \tag{13} J=WTSWWWTSBW(13)
由于 S B , S T S_B,S_T SBST不是标量,因此在目标函数中使用它们的行列式. 类似于二类推导的式子,可以得出
S W − 1 S B W = λ W (14) S_W^{-1} S_B W=λW\tag{14} SW1SBW=λW(14)
计算 S W − 1 S B S_W^{-1} S_B SW1SB的最大的 d d d个特征值和对应的 d d d个特征向量 ( w 1 , w 2 , … , w d ) (w_1,w_2,…,w_d) (w1,w2,,wd),即可得到投影矩阵W.

总结一下LDA的实现过程:

1)计算每个类样本的均值向量 μ i μ_i μi和所有样本的均值向量 μ μ μ
2)计算类内散度矩阵 S W S_W SW和类间散度矩阵 S B S_B SB
3)计算 S W − 1 S B S_W^{-1} S_B SW1SB的特征向量 W ( w 1 , w 2 , … , w D ) W(w_1,w_2,…,w_D) W(w1,w2,,wD)和对应的特征值 λ ( λ 1 , λ 2 , … , λ D ) λ(λ_1,λ_2,…,λ_D) λ(λ1,λ2,,λD)
4)选择 d d d个最大特征值对应的矩阵 W m ∗ d W_{m*d} Wmd
5)对数据集 X X X进行降维,得到对应的降维数据集 Y = W T X Y=W^T X Y=WTX

等价模型

根据LDA的基本思想,即让不同类别的数据的类别中心之间的距离尽可能的大,同时希望同一种类别数据的投影点尽可能的接近,可以得到不同的优化函数,如:
J ( W ) = ∣ W T S B W ∣ ∣ W T S W W ∣ J(W)=\frac{|W^T S_B W|}{|W^T S_W W|} J(W)=WTSWWWTSBW
J ( W ) = ∣ W T S B W ∣ ∣ W T S T W ∣ J(W)=\frac{|W^T S_B W|}{|W^T S_T W|} J(W)=WTSTWWTSBW
J ( W ) = ∣ W T ( S B − S W ) W ∣ ∣ W T W ∣ J(W)=\frac{|W^T (S_B-S_W )W|}{|W^T W|} J(W)=WTWWT(SBSW)W
以上优化目标的目的都是一样的,为了最大化类间距离同时最小化类内距离,根据以上不同优化目标函数能够得到不同的LDA模型。

正则化

让模型泛化性能更高,防止模型过拟合。也可为了让 S W S_W SW一定可逆而加。
J ( W ) = ∣ W T S B W ∣ ∣ W T ( S W + λ I ) W ∣ J(W)=\frac{|W^T S_B W|}{|W^T (S_W+λI)W|} J(W)=WT(SW+λI)WWTSBW

比较fisherface和eigenface

在这里插入图片描述
LDA用于降维,和PCA有很多相同,也有很多不同的地方。

相同点:

  1. 两者均可以对数据进行降维。
  2. 两者在降维时均使用了矩阵特征分解的思想。

不同点:

  1. LDA是有监督的降维方法,而PCA是无监督的降维方法
  2. LDA降维最多降到类别数C-1的维数,而PCA没有这个限制。
  3. LDA除了可以用于降维,还可以用于分类。
  4. LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

参考

1.机器学习-线性判别分析.周志华
2.线性判别分析(LDA)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导 的相关文章

  • Linux系统常用快捷键及VNC基本使用命令

    Linux系统常用快捷键及VNC基本使用命令 文章目录 Linux系统常用快捷键及VNC基本使用命令Linux系统的特点Linux树型目录结构Linux系统常用命令VNC常用命令 Linux系统的特点 多任务系统 在linux系统中可以同时
  • 【docker】docker学习(3)——Dockerfile的常用语法和编写实战

    大家好 xff0c 我是好学的小师弟 xff0c 今天和大家分享下Dockerfile的常用语法和编写实战 插曲 xff1a 在学习Dockerfile之前 xff0c 我们先讲解下docker save 和docker load 这两个命
  • 1.2 安装 docker 容器并配置镜像加速器

    1 2 1 实验环境准备 实验环境 xff1a CENTOS7 9 64 位 主机名 xff1a hou 主机 ip 10 0 8 120 xff08 这个 ip 大家可以根据自己所在环境去配置 xff0c 配置成静态 IP xff09 4
  • 弯管参数计算及编程实现

    船舶软件建立三维管道模型后 xff0c 需要自动生成管子加工信息 xff0c 这样就提高了设计效率 其中弯管参数主要是下料长度 xff0c 弯角和转角 下料长度是由各管段实长 xff0c 即管子中心线长度 xff0c 减去弯管部分切线长再加
  • 完整版数据库系统概论(第五版)-课后答案-免费网盘自提

    包含全部的课后答案与复习笔记 xff01 大家伙不挂科不被刷 xff0c 一起冲 xff01 虽然这个我也是找的别人的 xff0c 但是真的好用 xff01 百度网盘 https pan baidu com s 1Ux07PWvPb k3l
  • 踩坑笔记:安装Gazebo11

    安装环境 xff1a ubuntu18 04 在我上一篇博客中 xff0c 我们安装了ROS Melodic amp amp Ros2 Dashing 在我想要安装Gazebo11时候出现了错误 一 依赖错误 安装Gazebo11 xff1
  • 在keil5中调试串口遇到的问题

    1 问题 在keil5中调试stm32串口实验时 xff0c 向单片机的串口1发送数据 xff0c 观察串口1的寄存器 xff0c 此时串口1的中断服务函数会遇到无法进入下图if 的情况 xff0c 此时观察串口1寄存器 RXEN 的值 由
  • 树莓派在上电后一直重启进入不了系统桌面

    问题描述 树莓派在上电后一直重启进入不了系统桌面 xff0c 在检查了各种接口没问题后解决办法 原因分析与解决方案 xff1a 用了键盘 鼠标 显示器后5v 1A的插头不行 xff0c 换了ipad用的5V 2A的充电器后就可以开启了 xf
  • 树莓派连接“手机热点“或“WiFi“ 后无法上网,以及连接“手机热点“或“WiFi“时VNC连接失败问题

    问题描述 之前一直在开热点 xff0c 通过电脑端VNC控制树莓派拍摄照片 xff0c 今天突然发现树莓派上不去网 xff0c 所以就试着尝试解决了一下 xff0c 心路历程如下 xff1a 要么就是树莓派连不上网 xff0c 要么就是连上
  • 相机标定和双目相机标定标定原理推导及效果展示

    文章目录 前言一 相机标定1 相机的四个坐标系2 相机的畸变 二 张正友标定法1 求解内参矩阵与外参矩阵的积2 求解内参矩阵3 求解外参矩阵4 标定相机的畸变参数5 双目标定6 极线矫正 xff08 立体校正 xff09 三 视差图与深度图
  • keras:tensor从全连接层输出到卷积层

    一 tensor从卷积层输出到全连接层 用过keras的都知道 xff0c 想从卷积层输出tensor到全连接层 xff0c 只需加一层 xff1a model add Flatten shape就不会出现错误 二 但是如果从全连接层输出t
  • 保研面试复习之数据结构篇

    数据项 数据元素和数据结构的概念 数据项是组成数据元素的 xff0c 有独立含义的 xff0c 不可分割的最小单位 数据元素是数据的基本单位 数据结构是带结构的数据元素的集合 数据结构包括逻辑结构和存储结构两个层次 数据结构的三要素是逻辑结
  • 视觉里程计的重定位问题1——SVO的重定位部分

    SVO的重定位部分代码解析与分析 SVO的重定位功能体现在 xff1a 运动跟踪丢失后通过与上一关键帧匹配以及地图点投影 xff0c 找回当前相机位姿 由于没有后端和回环 xff0c SVO的重定位并不是回环校正后的重定位 代码部分被放在运
  • 组合导航(一):定位技术分类与介绍

    组合导航 xff08 一 xff09 xff1a 导航定位技术分类与介绍 一 定位技术分类1 1 基于相对测量的定位 xff08 航位推算 xff09 1 2 基于绝对测量的定位1 3 组合定位 一 定位技术分类 1 1 基于相对测量的定位
  • git bash可以正常commit,但是 VSCode 里不能正常commit使用的解决方法

    问题描述 同一路径下的源码 xff0c 使用git bash可以正常commit xff0c 但是使用vscode提交commit就会一直卡住 xff0c 转圈圈 参考方案链接 xff1a VS CODE GIT 500 问题处理 pudn
  • 组合导航(四):惯性导航系统

    1 惯性导航系统的物理平台2 惯性测量单元IMU3 惯性传感器的测量值3 1静止状态下的加速度测量3 2静止与运动状态下的角速度测量 4 惯性传感器误差4 1 系统误差 xff08 可通过实验进行校正 xff09 4 2 随机误差4 3 惯
  • 组合导航(七):卡尔曼滤波

    Kalman滤波1 离散卡尔曼滤波2 卡尔曼滤波的流程2 1 预测与时间更新2 2 测量更新与校正 3 卡尔曼滤波 算法步骤4 非线性卡尔曼滤波4 1 线性化kalman滤波4 2 扩展kalman滤波 5 卡尔曼滤波发散控制5 1 KF过
  • 组合导航(八):INS/GPS组合导航

    INS GPS组合导航1 误差反馈1 1 开环INS GPS架构1 2 闭环INS GPS架构 2 组合导航的类型2 1 松耦合 的INS GPS组合导航2 2 紧耦合 的INS GPS组合导航2 3 深度耦合的 INS GPS组合导航 3
  • 组合导航(九):三维简化的INS/GPS组合导航系统

    简化INS与GPS组合系统在三维路面上的导航1 MEMS级IMU的三维定位的性能分析2 解决MEMS级IMU在路面导航中存在的问题3 三维简化的惯性传感器系统3 1 3D RISS概述3 2 xff08 轮式车辆 xff09 采用3D RI
  • PX4安装与编译

    第一步 xff1a 下载源码 下载方式一 xff1a git clone https github com PX4 Firmware git recursive 默认下载版本为master 下载时间比较长 xff0c 包含各种包以及依赖工具

随机推荐

  • PX4:【系统架构】

    PX4系统架构 由两个层组成 xff1a 一是飞行控制栈 xff08 flight stack xff09 二是中间件 xff08 middleware xff09 flight stack xff1a 集成了各种自主无人机的制导 导航以及
  • PX4:【uORB通讯机制】

    uORB xff1a Micro Object Request Broker PX4进程间的通讯机制 xff1a 多对多的信息发布与订阅方式 发布消息 xff1a 1 公告 advertise xff1a 相当于初始化 xff0c 在发布消
  • PX4:【传感器校准】

    sensor的校准校准步骤 xff1a 文件目录 xff1a 代码入口 xff1a 求解模型计算公式 sensor的校准 校准步骤 xff1a 首先通过地面站QGC进行校准 xff0c QGC将校准参数设置到sh文件中 此后再基于QGC的校
  • PX4:【sensor_combined】

    功能介绍消息内容sensor combined 产生机制 amp 代码流程 功能介绍 sensor combined 是一个冗余传感器集合的消息 xff0c 通过订阅多个传感器的数据 xff0c 将冗余的数据经过VoteSensorsUpd
  • PX4:【地面站传感器数据校准】

    上电 gt rsC 运行 sensor start commander start 入口函数 xff1a 位于commander文件夹中 Commader cpp Commander run xff08 xff09 commander lo
  • Windows和Linux双系统安装教程

    最近刚刚完成了Windows和Linux双系统 xff08 这里以Ubuntu安装为例 xff09 的安装 xff0c 应某奔同学要求 xff0c 这里简单记录下安装过程 系统启动盘准备Windows系统安装分出给Linux系统的磁盘空间安
  • MSCKF系列论文阅读与代码流程

    MSCKF原理与代码总结 算法原理前端理论 xff08 图像的特征提取与跟踪 xff09 后端理论 xff08 误差状态卡尔曼滤波模型 xff09 1 IMU状态预测1 1 IMU状态传播 xff08 p v q 4阶Runge Kutta
  • open_vins(二):rosbag精度测试

    一 xff0e ros读取与轨迹保存二 xff0e euroc数据集测试三 结论 一 xff0e ros读取与轨迹保存 运行open vins launch 读取ros数据包 xff1a roslaunch pgeneva ros eth
  • open_vins(三):imu静止初始化

    一 xff0e 静止初始化原理二 xff0e 理论公式三 xff0e 相关代码四 xff0e 小结 xff1a 初始化是指在系统启动阶段 xff0c 需要估计重力方向 gravity direction 加速度计以及陀螺仪biases ac
  • ros数据集录制:rosbag record

    1 查看话题 查看topic列表 xff1a rostopic list 打印topic内容 xff1a rostopic echo topic xff12 话题录制rosbag record 用于在ros系统中录取系统中其他ros节点发出
  • git pull的时候:您对下列文件的本地修改将被合并操作覆盖,请在合并前提交或贮藏您的修改。 正在终止

    使用git pull的时候报错 xff1a 更新 span class token number 008728 span e span class token punctuation span span class token number
  • 使用webpack-dev-server自动打包并实现debug调试

    webpack dev server 是一个开发服务器 xff0c 它的功能就是可以实现热加载 xff0c 并且自动刷新浏览器 准备工作 xff1a 创建一个程序目录test xff0c 将html页面拷贝进来 xff0c 在目录下新建sr
  • ROS实现串口GPS数据的解析与通信

    1 配置串口 配置串口时 xff0c 利用ROS自带的serial功能包进行串口数据的读取 xff0c 具体来说就是创建一个串口对象 xff0c 用成员函数read进行读取 xff0c 需要注意的是其中Timeout的设置以及read在调用
  • sumo之使用netedit绘制路网并进行简单模拟

    1 基本路网的构建 xff08 十字路口 xff09 在下载完成sumo后 xff0c bin目录下有一个可以运行的nete exe xff0c 点击可以进入界面进行路网的编辑 xff0c 编辑生成 net xml文件 点击进去后 xff0
  • sumo之模拟行人

    在前面的文章中介绍了模拟车辆以及交通工具 公共汽车 xff0c 在道路上除了车辆外还有行人参与 在本文中介绍添加行人 详细的方法和参数可以前往官网查看 本部分的模拟路网全部沿用上次公共汽车模拟的环境 xff0c 只需要对部分代码进行修改 首
  • 【开发工具】VScode连接远程服务器+设置免密登录

    文章目录 前言连接远程服务器免密登录注意事项参考资料 前言 本文介绍如何使用VScode搭建自己的远程开发平台 xff0c 以便于我们可以随时拿着自己心爱的PC xff0c 去开发让自己脱发的项目 连接远程服务器 首先 xff0c 我们去官
  • 2.3、Segment Routing基础之IGP Segment 类型详解

    本文将重点介绍IGP Segment 分发场景下常见的几种Segment类型 xff0c 同时为各位介绍了这些Segment类型在在Segment Routing转发过程中的转发动作以及转发特性 本文将对各位理解Segment Routin
  • IDEA日常填坑:Cannot resolve plugin org.apache.maven.plugins:maven-war-plugin

    问题描述 xff1a 我太难了o o xff0c 这个问题竟然困扰了我一个下午加上一个晚上 xff0c 为了解决它 xff0c 估计浏览器都要被我弄崩了吧 xff0c 此前我将所能找到的方法全都试了个遍 xff0c 甚至是将 IDEA 卸载
  • 判断点在多边形内(射线法)

    射线法 用来判断点在多边形的内外 适用于任意多边形 时间复杂度 xff1a O n 从该点引出一条水平射线 xff0c 观察射线与多变形的交点个数 当射线与多边形的交点个数是奇数时 xff0c P在多边形内 偶数时 xff0c P在多边形外
  • 线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导

    LDA算法概述 xff1a 线性判别式分析 Linear Discriminant Analysis LDA xff0c 也叫做Fisher线性判别 Fisher Linear Discriminant FLD xff0c 是模式识别的经典