Allan方差分析法分析静态噪声的原理及实例代码
本文给出了 Allan 方差的计算方法,应用于噪声分析的原理、步骤,并在结尾附上了计算函数的代码和应用实例。
Allan 方差
Allan方差分析法分析惯性仪器(本文以陀螺仪为例)静态噪声的原理:将不同噪声的功率谱密度函数转换为 Allan 方差表达式,分析它们噪声在 Allan 方差曲线上的特定斜率,并在陀螺仪测量数据计算出的 Allan 方差曲线上进行匹配,再根据特征点求解每种噪声成分的系数。
Allan 方差 (Allan Variance, AVAR),中文一般称为阿仑方差
Allan 方差一般能识别以下五种噪声:
- 量化噪声
- 角度随机游走噪声
- 零偏不稳定性
- 角速率随机游走噪声
- 速率斜坡
分析步骤
采集陀螺仪静态噪声
根据噪声信号计算并画出出 Allan 方差曲线
在 Allan 方差曲线匹配每种噪声的特征斜率,根据函数与图像关系找到特征点,求出每种噪声的功率谱密度函数种的系数
五种噪声分析
功率谱密度函数与 Allan 方差之间的关系:
$$
\sigma _ {y} ^ 2 (\tau) = 4 \int_{0}^{\infty} S _ {y}(f) \frac{\sin^4(\pi f \tau)} {(\pi f \tau)^2} df
$$
将噪声的功率谱密度函数代入上式,即可得到噪声的 Allan 方差表达式,最后取双对数分析。
| 噪声类型 | 功率谱密度 | Allan 方差 | 特征斜率 | 特征点 |
|---|---|---|---|---|
| 量化噪声(QN) | $S_ {\Delta}(f) = \tau_{\tiny0}Q^2$ | $\log_{10}\sigma_{\tiny{QN}}(\tau)=\log_{10}\sqrt{3}Q-\log_{10}\tau$ | -1 | $(1,\sqrt{3}Q)$ |
| 角度随机游走(ARW) | $S_{\varOmega}(f) = N^2$ | $\log_{10} \sigma_{\tiny{ARW}}(\tau) = \log_{10}N - \frac{1}{2}\log_{10}\tau$ | $-\frac{1}{2}$ | $(1,N)$ |
| 零偏不稳定性噪声(BI) | $S_{\varOmega}(f) = \frac{B^2}{2 {\pi} f}$ | $\log_{10} \sigma_{\tiny{ARW}}(\tau) = \log_{10}\frac{2B}{3}$ | 0 | $(1,\frac{2B}{3})$ |
| 角速率随机游走(RRW) | $S_{\varOmega}(f) = \frac{K^2}{(2 {\pi} f)^2}$ | $\log_{10} \sigma_{\tiny{ARW}}(\tau) = \frac{1}{2}\log_{10}\frac{K}{\sqrt{3}}$ | $\frac{1}{2}$ | $(1,\frac{K}{\sqrt{3}})$ |
| 速率斜坡(RR) | - | $\log_{10} \sigma_{\tiny{ARW}}(\tau) = \log_{10}\frac{R\tau}{\sqrt{2}}$ | 1 | $(1,\frac{R}{\sqrt{2}})$ |
注:对于速率斜坡噪声,一般假设角速率 $\Omega$ 与测试时间 t 之间呈线性关系$\varOmega(t) = \varOmega(0) + Rt$,Allan 方差可直接计算
Allan 方差计算过程
输入:角速率序列,取样时间为 $\tau_{0}$
输出:不同相关时间$\tau$下的 Allan 方差值,并取双对数绘制成 Allan 方差曲线
下面是具体的计算步骤:
- 首先计算取样时间为 $\tau_{\tiny0}$ 时的 Allan 方差:
$$
\hat{\sigma}^{2} _ {A}(\tau_{\tiny0}) = \dfrac{1}{2 (N-1)}\textstyle\sum_{k=1}^{N-1}[\overline{\varOmega} _ {k+1}(\tau_{\tiny0}) - \overline{\varOmega} _ {k}(\tau_{\tiny0})]^2
$$
其次将取样时间间隔加倍,记 $\tau_{\tiny1} = 2^1 \tau_{\tiny0}$ 和 $N_{1} = [N/2]$($[\enspace \cdot \enspace]$ 表示取整),在相继奇偶序号角速率之间作算术平均,即
$$
\overline{\varOmega} _ {k} (\tau_{\tiny1}) = \dfrac{\overline {\varOmega} _ {2k-1} (\tau _ {\tiny0}) + \overline {\varOmega} _ {2k} (\tau _ {\tiny0})} {2}, \quad k = 1,\enspace 2,\enspace 3,…,\enspace N _ {1}
$$
组成新的取样时间间隔为 $\tau{\tiny1}$ 的平均角速率序列,即
$$
\overline{\varOmega} _ {1} (\tau _ {\tiny1}), \enspace \overline{\varOmega} _ {2} (\tau _ {\tiny1}), \enspace \overline{\varOmega} _ {3} (\tau _ {\tiny1}), \enspace …, \enspace \overline{\varOmega} _ {N _ 1} (\tau _ {\tiny1})
$$
显然新序列长度减半(但可能相差 1 个数据,下同),计算取样时间为 $\tau _ {\tiny1}$ 时的 Allan 方差,即
$$
\sigma _ {A} ^ 2 (\tau _ {\tiny1}) = \dfrac {1} {2(N _ 1-1)} \textstyle\sum _ {k=1} ^ {N _ 1-1} [\overline{\varOmega} _ {k+1} (\tau _ {\tiny1}) - \overline{\varOmega} _ {k}(\tau _ {\tiny1})]^2
$$再次将取样时间间隔加倍,记 $\tau _ {\tiny2} = 2 \tau _ {\tiny1} = 2 ^ 2 \tau _ {\tiny0}$ 和 $N _ {2} = [N _ {1} / 2]$,计算平均角速率,即
$$
\overline{\varOmega} _ {k} (\tau_{\tiny2}) = \dfrac{\overline {\varOmega} _ {2k-1} (\tau _ {\tiny1}) + \overline {\varOmega} _ {2k} (\tau _ {\tiny1})} {2}, \quad k = 1,\enspace 2,\enspace 3,…,\enspace N _ {2}
$$
组成新的取样时间间隔为 $\tau{\tiny2}$ 的平均角速率序列,即
$$
\overline{\varOmega} _ {1} (\tau_{\tiny2}), \enspace \overline{\varOmega} _ {2} (\tau _ {\tiny2}), \enspace \overline{\varOmega} _ {3} (\tau _ {\tiny2}), \enspace …, \enspace \overline{\varOmega} _ {N _ 2} (\tau _ {\tiny2})
$$
新序列的长度再次减半,计算取样时间为 $\tau _ {\tiny2}$ 时的 Allan 方差,即
$$
\sigma _ {A} ^ 2 (\tau _ {\tiny2}) = \dfrac {1} {2(N _ 2-1)} \textstyle\sum _ {k=1} ^ {N _ 2-1} [\overline{\varOmega} _ {k+1} (\tau _ {\tiny2}) - \overline{\varOmega} _ {k}(\tau _ {\tiny2})]^2
$$如此反复将取样时间间隔不断加倍,记 $\tau _ {\tiny{L}} = 2 \tau _ {\tiny{L-1}} = 2^{L} \tau _ {\tiny{0}}$ 和 $N _ L = [N _ {L-1}/2]$,直至最终序列的长度不大于2,得平均角速率序列为
$$
\overline{\varOmega} _ {1} (\tau_{\tiny{L}}), \enspace, \enspace\overline{\varOmega} _ {N _ L} (\tau _ {\tiny{L}})
$$
并计算取样时间为 $\tau _ {\tiny{L}}$ 时得 Allan 方差,即
$$
\sigma _ {A} ^ 2 (\tau _ {\tiny{L}}) = \dfrac {1} {2(N _ L-1)} \textstyle\sum _ {k=1} ^ {N _ L-1} [\overline{\varOmega} _ {k+1} (\tau _ {\tiny{L}}) - \overline{\varOmega} _ {k}(\tau _ {\tiny{L}})]^2
$$
至此,获得一系列得点对 $\tau _ {\tiny{i}} \backsim \sigma _ {A} ^ 2 (\tau _ {\tiny{i}})$ 或 $\tau _ {\tiny{i}} \backsim \sigma _ {A} (\tau _ {\tiny{i}}), \enspace i=1, \enspace 2, \enspace 3, \enspace … L$,完成 Allan 方差估计,并将结果绘制成双对数图。
注意事项:
Allan Variance 与 Allan Deviation
虽然我们称这种分析方法为 Allan 方差 $\tau_{\tiny{i}} \backsim \sigma _ {A} ^ 2 (\tau _ {\tiny{i}})$,但是在实际分析时一般取根号,得到的是 Allan Deviation $\tau _ {\tiny{i}} \backsim \sigma _ {A} (\tau_{\tiny{i}})$
只能用于静态噪声分析
Allan 方差滤波器在零频率处截止,因此基座常值角速率干扰并不影响 Allan 方差的计算结果,但基座变角速率会引起额外的功率谱分量,如果不能消除会影响陀螺 Allan 方差性能参数分析的准确性。
单位转换问题
国际单位制,$\tau$ 和 $\sigma_{A}(\tau)$ 的单位分别取 $rad/s$ 和 $s$,但实际分析过程中一般 $\sigma$ 常以 $^\circ/h$ 为单位,并且各项噪声系数也常使用 $^\circ$ 和 $h$ 的组合作为单位(除 Q 外),所以,求噪声系数的特征点也会随之改变,这里特征点的横坐标单位为 $s$。
| 噪声类型 | 误差系数 | 习惯单位 | 特征斜率 | 特征点 |
|---|---|---|---|---|
| 量化噪声(QN) | Q | “ | -1 | (1, $\sqrt{3}Q$) |
| 角度随机游走(ARW) | N | $^\circ/h^{\frac{1}{2}}$ | $-\frac{1}{2}$ | (100, 6N) |
| 零偏不稳定性噪声(BI) | B | $^\circ/h$ | 0 | (1, $\frac{2B}{3}$) |
| 角速率随机游走(RRW) | K | $^\circ/h^{\frac{3}{2}}$ | $\frac{1}{2}$ | (100, $\frac{K}{6\sqrt{3}}$) |
| 速率斜坡(RR) | R | $^\circ/h^2$ | 1 | (1000, $\frac{R}{3.6\sqrt{2}}$) |
代码实现
实例代码:
1 | % 传感器: MEMS陀螺仪 |
求得的 Allan 方差曲线图和斜率图如下:


下面是函数 AllanCompute, AllanAnalyze, NoiseAnalyze 的源码:
AllanCompute.m
1 | function [sigma, tau, Err] = AllanCompute(y0, tau0) |
AllanAnalyze.m
1 | function [sigmasOut,f,h] = AllanAnalyze(AD,T,Slopes,Ts,plots,method) |
NoiseAnalyze.m
1 | function [] = NoiseAnalyze(sigmasOut, figs, hs) |
参考资料
[1]: 惯性仪器测试与数据分析, 135-158