04 磁力校准

magnetometer calibration

磁场传感器校准
误差估计 证明软磁与硬磁误差叠加后依然是个椭球
椭球拟合
椭球一般表达式与约束
最小二乘法校准
拉格朗日算子添加约束条件
正规解法 QR分解 SVD分解
椭圆拟合
椭圆矩阵表达式
椭圆矩阵表达的特征值 矩阵回归
正定矩阵
磁场传感器校准模型
Ah+b
A(h+b)
点积不变校准
椭圆一般表达式
4参数 7参数 10参数校准
矩阵通过特征值求根

fit circle

一般式

x 2 + y 2 − a x − b y − c = 0 x^2 + y^2 -ax -by -c = 0 x2+y2axbyc=0
矩阵表示为:
[ x y 1 ] ⋅ [ a b c ] = x 2 + y 2 \begin{bmatrix} x & y & 1 \end{bmatrix} \cdot \begin{bmatrix} a\\ b \\ c\\\end{bmatrix} = x^2 + y^2 [xy1] abc =x2+y2
可以令 X = ( a   b   c ) T X = (a \ b\ c )^T X=(a b c)T 通过最小二乘法求解出结果

一般式加上约束

约束条件为 a 2 + b 2 − 4 c > 0 a^2+b^2-4c>0 a2+b24c>0 由于 c是待求,则可修改为 a 2 + b 2 − 4 c = 1 a^2+b^2-4c=1 a2+b24c=1
拉格郎日函数为:此条件下一般式最小二乘法最小值。
F ( x ) = ( x 2 + y 2 − a x − b y − c ) 2 + λ ( a 2 + b 2 − 4 c − 1 ) F(x)=(x^2+y^2-ax-by-c)^2 + \lambda (a^2+b^2-4c-1) F(x)=(x2+y2axbyc)2+λ(a2+b24c1)

则对单条数据要求:
[ F a F b F c F λ ] = [ 0 0 0 0 ] \begin{bmatrix} \frac{F}{a} \\ \frac{F}{b} \\ \frac{F}{c} \\ \frac{F}{\lambda} \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} aFbFcFλF = 0000
对于 m m m个样本,则有 m × 4 m \times 4 m×4个等式,可以进行最小二乘法求解(自己想的,知道对不对)

下文使用矩阵求解
定义向量
A = [ 1 , a , b , c ] T X = [ x 2 + y 2 , x , y , 1 ] F ( X ) = X ⋅ A = 0 A = [1,a,b,c]^T \\ X = [x^2+y^2,x,y,1] \\ F(X)=X \cdot A = 0 A=[1,a,b,c]TX=[x2+y2,x,y,1]F(X)=XA=0
写成矩阵形式,定义样本矩阵 D D D
D = [ x 1 2 + y 1 2 x 1 y 1 1 x 2 2 + y 2 2 x 2 y 2 1 . . . x N 2 + y N 2 x N y N 1 ] D = \begin{bmatrix} x_1^2 +y_1^2 & x_1 &y_1 &1 \\ x_2^2 +y_2^2 & x_2 &y_2 &1 \\ ... \\ x_N^2 +y_N^2 & x_N &y_N &1 \end{bmatrix} D= x12+y12x22+y22...xN2+yN2x1x2xNy1y2yN111
最小即是 m i n ∥ D a ∥ 2 min \begin{Vmatrix} Da\end{Vmatrix}^2 min Da 2
定义矩阵表达式表示 a 2 + b 2 − 4 c = 1 a^2+b^2-4c=1 a2+b24c=1
C = [ 0 0 0 − 2 0 1 0 0 0 0 1 0 − 2 0 0 0 ] C = \begin{bmatrix} 0 & 0& 0& -2 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -2 & 0 & 0 & 0 \end{bmatrix} C= 0002010000102000
约束为 A T C A = 1 A^TCA=1 ATCA=1

定义拉格朗日函数 L ( A , λ ) = D A A T D − λ ( A T C A − 1 ) L(A,\lambda)=DAA^TD-\lambda(A^TCA-1) L(A,λ)=DAATDλ(ATCA1)
对A求导
得到
2 D T D A − 2 λ C A = 0 2D^TDA-2\lambda CA=0 2DTDA2λCA=0
令, D T D = S D^TD=S DTD=S 等式变成 S A = λ C A SA=\lambda CA SA=λCA由于C比较简单且可逆,则表达式变成
C − 1 S A = λ A C^{-1}SA=\lambda A C1SA=λA
得出A为特征向量。

fit ellipse

标准方程:
( x − x 0 ) 2 a 2 + ( y − y 0 ) 2 b 2 = 1 \frac{(x-x_0)^2}{a^2} + \frac{(y-y_0)^2}{b^2} = 1 a2(xx0)2+b2(yy0)2=1

一般方程:
a x 2 + b x y + c y 2 + d x + e y + f = 0 ax^2+bxy+cy^2+dx+ey+f=0 ax2+bxy+cy2+dx+ey+f=0
约束: b 2 − 4 a c < 0 b^2-4ac<0 b24ac<0

使用一般方程进行矩阵拟合:
F ( x , y ) = a x 2 + b x y + c y 2 + d x + e y + f = 0 A = [ a , b , c , d , e , f ] T X = [ x 2 , x y , y 2 , x , y , 1 ] F ( X ) = X ⋅ A F(x,y) = ax^2+bxy+cy^2+dx+ey+f=0 \\ A=[a,b,c,d,e,f]^T \\ X=[x^2,xy,y^2,x,y,1] \\ F(X)=X \cdot A F(x,y)=ax2+bxy+cy2+dx+ey+f=0A=[a,b,c,d,e,f]TX=[x2,xy,y2,x,y,1]F(X)=XA
加约束 4 a c − b 2 = 1 4ac-b^2=1 4acb2=1
定义矩阵
C = [ 0 0 2 0 0 0 0 − 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] C = \begin{bmatrix} 0 & 0 &2 & 0 & 0 & 0 \\ 0 & -1 &0 & 0 & 0 & 0 \\ 2 & 0 &0 & 0 & 0 & 0 \\ 0 & 0 &0 & 0 & 0 & 0 \\ 0 & 0 &0 & 0 & 0 & 0 \\ 0 & 0 &0 & 0 & 0 & 0 \\ \end{bmatrix} C= 002000010000200000000000000000000000

数据源矩阵
D = [ x 1 2 x 1 y 1 y 1 2 x 1 y 1 1 . . . x i 2 x i y i y i 2 x i y i 1 . . . x n 2 x n y n y n 2 x n y n 1 ] D = \begin{bmatrix} x_1^2 & x_1y_1 & y_1^2 & x_1 & y_1 &1 \\ ... \\ x_i^2 & x_iy_i & y_i^2 & x_i & y_i &1 \\ ... \\ x_n^2 & x_ny_n & y_n^2 & x_n & y_n &1 \end{bmatrix} D= x12...xi2...xn2x1y1xiyixnyny12yi2yn2x1xixny1yiyn111

拟合问题变成 m i n ∥ D a ∥ 2 min \begin{Vmatrix} Da \end{Vmatrix}^2 min Da 2 当符合条件 A T C A = 1 A^TCA=1 ATCA=1
定义拉格朗日函数 L ( A , λ ) = D A A T D − λ ( A T C A − 1 ) L(A,\lambda)=DAA^TD-\lambda(A^TCA-1) L(A,λ)=DAATDλ(ATCA1)
对A求导
得到
2 D T D A − 2 λ C A = 0 2D^TDA-2\lambda CA=0 2DTDA2λCA=0
令, D T D = S D^TD=S DTD=S 等式变成 S A = λ C A SA=\lambda CA SA=λCA变换为:
S − 1 C A = 1 λ A S^{-1}CA=\frac{1}{\lambda} A S1CA=λ1A
得出A为特征向量。

拉格朗日乘数法

单约束

假定在 g ( x ) = 0 g(x)=0 g(x)=0 条件下求 f ( x ) f(x) f(x)的极值,一般表示如下:
m i n m a x f s . t .    g = 0 minmax f \\ s.t.\ \ g=0 minmaxfs.t.  g=0
其中s.t. 表示subject to,服从于,表示约束。
由极值点的导数相差常数倍,则可以得到以下方程
{ Δ f = λ Δ g   g = 0   \left\{ \begin{gather} \Delta f = \lambda \Delta g \ \\ g=0 \ \end{gather}\right. {Δf=λΔg g=0 
以上表达式也可以写成
F = f + λ g   [ F δ x F δ y F δ λ ] = [ 0 0 0 ] F=f+\lambda g \ \\ \begin{bmatrix} \frac{F}{\delta x} \\ \frac{F}{\delta y} \\ \frac{F}{\delta \lambda} \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} F=f+λg  δxFδyFδλF = 000

有与 λ \lambda λ是未知量,也可以将+替换成-。

多约束

假定在 g ( x ) = 0   h ( x ) = 0 g(x)=0 \ h(x)=0 g(x)=0 h(x)=0 条件下求 f ( x ) f(x) f(x)的极值,一般表示如下:
m i n m a x f s . t .    g = 0   h = 0 minmax f \\ s.t.\ \ g=0 \ h=0 minmaxfs.t.  g=0 h=0
其中s.t. 表示subject to,服从于,表示约束。
由极值点的导数相差常数倍,则可以得到以下方程
{ Δ f = λ Δ g + u Δ h   g = 0   h = 0   \left\{ \begin{gather} \Delta f = \lambda \Delta g + u \Delta h\ \\ g=0 \ \\ h=0 \ \end{gather}\right. Δf=λΔg+uΔh g=0 h=0 
以上表达式也可以写成
F = f + λ g + u h   [ F δ x F δ y F δ λ F δ u ] = [ 0 0 0 0 ] F=f+\lambda g + u h \ \\ \begin{bmatrix} \frac{F}{\delta x} \\ \frac{F}{\delta y} \\ \frac{F}{\delta \lambda} \\ \frac{F}{\delta u} \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} F=f+λg+uh  δxFδyFδλFδuF = 0000

有与 λ \lambda λ是未知量,也可以将+替换成-。

参考

问题1,矩阵求导

https://zhuanlan.zhihu.com/p/143017326
其中未理解问题,下图中的求导数过程:

矩阵求导有分子布局和分母布局,本质上是偏微分矩阵。
目标是向量

1 常数求导
δ c δ x = 0 n × 1 \frac{\delta c}{\delta x} = 0_{n \times 1} δxδc=0n×1
2 线性法则
δ [ c 1 f ( x ) + c 2 g ( x ) ] δ x = c 1 δ f ( x ) δ x + c 2 δ g ( x ) δ x \frac{\delta[c_1 f(x) + c_2 g(x)]}{\delta x} = c_1 \frac {\delta f(x)}{\delta x} + c_2 \frac {\delta g(x)}{\delta x} δxδ[c1f(x)+c2g(x)]=c1δxδf(x)+c2δxδg(x)
3 乘法法则,其中 f ( x )   g ( x ) f(x)\ g(x) f(x) g(x) 是标量,非矩阵相乘,表示相乘后形成的矩阵
δ [ f ( x ) g ( x ) ] δ x = g ( x ) δ f ( x ) δ x + f ( x ) δ g ( x ) δ x \frac{\delta[f(x)g(x)]}{\delta x} = g(x) \frac {\delta f(x)}{\delta x} + f(x) \frac {\delta g(x)}{\delta x} δxδ[f(x)g(x)]=g(x)δxδf(x)+f(x)δxδg(x)

4 商法则
δ [ f ( x ) g ( x ) ] δ x = 1 g 2 ( x ) [ δ f ( x ) δ x g ( x ) − f ( x ) δ g ( x ) δ x ] \frac {\delta [ \frac {f(x)}{g(x)} ] }{\delta x}=\frac {1}{g^2(x)}[ \frac {\delta f(x)}{\delta x}g(x)- f(x)\frac{\delta g(x)}{\delta x}] δxδ[g(x)f(x)]=g2(x)1[δxδf(x)g(x)f(x)δxδg(x)]
$$

KaTeX parse error: Can't use function '$' in math mode at position 15: 5 几个公式 5.1 其中$̲a$为常量
\frac{\delta ( x^Ta)}{\delta x} = \frac{\delta ( a^Tx)}{\delta x} = a
5.2 5.2 5.2
\frac {\delta x^Tx}{\delta x} = 2x
$$

5.3 A n × n A_{n \times n} An×n 是常数矩阵
δ ( x T A x ) δ x = A x + A T x \frac {\delta (x^TAx)}{\delta x} = Ax + A^Tx δxδ(xTAx)=Ax+ATx
5.4 其中 a   b a\ b a b为常数向量
δ ( a T x x T b ) δ x = a b T x + b a T x \frac {\delta (a^Txx^Tb)}{\delta x} = ab^Tx + ba^Tx δxδ(aTxxTb)=abTx+baTx

目标是矩阵

1,2,3,4 是一样的
5 几个公式
5.1 a m × 1   b n × 1 a_{m\times 1} \ b_{n \times 1} am×1 bn×1 为常数向量
δ ( a T X b ) δ X = a b T \frac {\delta (a^TXb)}{\delta X} = ab^T δXδ(aTXb)=abT
5.2
δ ( a T X T b ) δ X = δ ( a T X T b ) T δ X = b a T \frac {\delta (a^T X^T b)}{\delta X} = \frac {\delta (a^T X^T b)^T}{\delta X}=ba^T δXδ(aTXTb)=δXδ(aTXTb)T=baT

5.3
δ ( a T X X T b ) δ X = a b T X + b a T X \frac {\delta(a^T X X^T b)}{\delta X} = ab^TX + ba^TX δXδ(aTXXTb)=abTX+baTX
5.4
δ ( a T X T X b ) δ X = X a b T + X b a T \frac {\delta(a^T X^T X b)}{\delta X} = Xab^T + Xba^T δXδ(aTXTXb)=XabT+XbaT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在长沙玩技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值