[カルマンフィルタは難しくない]1.3再帰フィルタ-ローパスフィルタ(ローパスフィルタ)


移動平均フィルタとローパスフィルタには何の関連もないように見えますが、深い関連性があります.
移動平均フィルタとローパスフィルタがどのように接続されているかを,データ推定の観点と電子工学における観点と比較した.
1.移動平均フィルタの制限
データ推定の観点から移動平均の意味を見直し,移動平均フィルタの限界を理解する.
xˉk=xk−n+1+xk−n+2+⋯+xk−1+xkn\bar{x}_k=\frac{x_{k-n+1}+x_{k-n+2}+\cdots+x_{k-1}+x_{k}}{n}xˉk​=nxk−n+1​+xk−n+2​+⋯+xk−1​+xk​​
=1nxk−n+1+1nxk−n+2+⋯+1nxk−1+1nxk=\frac{1}{n}x_{k-n+1}+\frac{1}{n}x_{k-n+2}+\cdots+\frac{1}{n}x_{k-1}+\frac{1}{n}x_{k}=n1​xk−n+1​+n1​xk−n+2​+⋯+n1​xk−1​+n1​xk​
式からも,移動平均の特徴と欠点は,以前のすべてのデータに対して同じ重み付けを行うことであることがわかる.つまり、古い測定値と最新の測定値は同じ比重で扱われる.
この欠点を解決し,最近の測定値が古い測定値よりも高い重み付けを持つようにした.これがローパスフィルタである.
2.ローパスフィルタ再帰
上記の考え方は再帰的な方法で以下に示すことができる.
x‾k=αx‾k−1+(1−α)xk\overline{x}_{k}=\alpha\overline{x}_{k-1}+(1-\alpha)x_kxk​=αxk−1​+(1−α)xk​
どこかで見たことがあるはずです.これは、平均フィルタと同じ構造を共有しているためです.
x‾k=k−1kx‾k−1+1kxk\overline{x}_{k}=\frac{k-1}{k}\overline{x}_{k-1}+\frac{1}{k}x_kxk​=kk−1​xk−1​+k1​xk​
偽再帰が最近の測定値により高い重みを与える方法がまだ分からない場合は、もう一度α\alphaα彼からなる復帰式を解きましょう.
x‾k=αx‾k−1+(1−α)xk\overline{x}_{k}=\alpha\overline{x}_{k-1}+(1-\alpha)x_kxk​=αxk−1​+(1−α)xk​
=α(αx‾k−2+(1−α)xk−1)+(1−α)xk=\alpha(\alpha\overline{x}_{k-2}+(1-\alpha)x_{k-1} )+(1-\alpha)x_k=α(αxk−2​+(1−α)xk−1​)+(1−α)xk​
=α2x‾k−2+α(1−α)xk−1+(1−α)xk=\alpha^2\overline{x}_{k-2}+\alpha(1-\alpha)x_{k-1} +(1-\alpha)x_k=α2xk−2​+α(1−α)xk−1​+(1−α)xk​
こちらです.α\alphaα0<α<10<\alpha<10<α<1の大きさを等しい定数にすると、
α(1−α)<(1−α)\alpha(1-\alpha)<(1-\alpha)α(1−α)<(1−α)
従って、最近の測定値(xkxkxk)は、過去の推定値(xkͧ1 x{k−1}xkͧ1)よりも大きな重みが与えられ、推定に反映される.
このとき、過去の重みは最近の重みを正確に反映します.α\alphaα倍に比例して減少するので、移動平均フィルタは指数重み付け移動平均フィルタとも呼ばれる.
3.電気信号角度からのローパスフィルタ
一般に、ローパスフィルタは、電気工学、電子工学、または周波数学に関する研究がかえって多い.
低域通過フィルタを周波数角度(Laplaceドメイン)から理解し,データ推定角度の回帰と関連付けた.
(注:伝達関数の概念とラプラス変換を理解していると仮定します)

普通のローパスをRC回路に簡単に実現するのを見たことがあるかもしれません.ここでの入出力は電圧(v(t)v(t)v(t))である.
以下に示すように,キルヒフ法則を用いて微分方程式を導出した.
Ri(t)+vo(t)=vi(t)Ri(t)+v_o(t)=v_i(t)Ri(t)+vo​(t)=vi​(t)
RCddtvo(t)+vo(t)=vi(t),  ∵i(t)=Cddtvo(t)RC\frac{d}{dt}v_o(t)+v_o(t)=v_i(t),\;\because i(t) = C\frac{d}{dt}v_o(t)RCdtd​vo​(t)+vo​(t)=vi​(t),∵i(t)=Cdtd​vo​(t)
RCv˙o(t)+vo(t)=vi(t)RC\dot{v}_o(t)+v_o(t)=v_i(t)RCv˙o​(t)+vo​(t)=vi​(t)
ラプラス変換による伝達関数の求め
(RCs+1)Vo(s)=Vi(s),  (RCs+1)V_o(s)=V_i(s),\;(RCs+1)Vo​(s)=Vi​(s),
G(s)=Vo(s)Vi(s)=1RCs+1=ωcs+ωc,  ωc=1/RCG(s) =\frac{V_o(s)}{V_i(s)}=\frac{1}{RCs+1} =\frac{\omega_c}{s+\omega_c},\;\omega_c= 1/RCG(s)=Vi​(s)Vo​(s)​=RCs+11​=s+ωc​ωc​​,ωc​=1/RC
擬似をエクスポートします.ここでωc\omega_cωcはカットオフ周波数である.上記の式をラプラス逆変換に再変換します.
Vo(s)=G(s)Vi(s)=ωcs+ωcVi(s)V_o(s) = G(s)V_i(s) =\frac{\omega_c}{s+\omega_c}V_i(s)Vo​(s)=G(s)Vi​(s)=s+ωc​ωc​​Vi​(s)
(s+ωc)Vo(s)=ωcVi(s)(s+\omega_c)V_o(s) =\omega_cV_i(s)(s+ωc​)Vo​(s)=ωc​Vi​(s)
v˙o(t)+ωcvo(t)=ωcvi(t)\dot{v}_o(t)+\omega_cv_o(t)=\omega_cv_i(t)v˙o​(t)+ωc​vo​(t)=ωc​vi​(t)
移動平均フィルタの観点から,入力は測定値(xkx kxk),ouuputはフィルタ値(x)である.ˉk\bar{x}_kxˉk)であるため、上記の表現を再表現すると以下のようになる.
xˉ˙k+ωcxˉk=ωcxk\dot{\bar{x}}_k+\omega_c\bar{x}_k=\omega_cx_kxˉ˙k​+ωc​xˉk​=ωc​xk​
xˉk−xˉk−1Δt+ωcxˉk=ωcxk\frac{\bar{x}_k -\bar{x}_{k-1}}{\Delta t}+\omega_c\bar{x}_k=\omega_cx_kΔtxˉk​−xˉk−1​​+ωc​xˉk​=ωc​xk​
∴xˉk=1ωc+Δtxˉk−1+ωcωc+Δtxk\therefore\bar{x}_k=\frac{1}{\omega_c+\Delta t}\bar{x}_{k-1} +\frac{\omega_c}{\omega_c+\Delta t}x_k∴xˉk​=ωc​+Δt1​xˉk−1​+ωc​+Δtωc​​xk​
アルファは次のように見えます
α=1ωc+Δt\alpha =\frac{1}{\omega_c+\Delta t}α=ωc​+Δt1​
周波数の観点から、割り込み周波数はデータ推定の観点から、α\alphaαの形で溶けたものが見えます.
最終的には、
α\alphaα大きくなると、切断周波数が低下することを意味し、測定値に対する感度はノイズ除去よりも高い.
α\alphaα「小さくなる」ことは,接線周波数が大きくなり,測定値よりもノイズの除去に敏感になることを直感的に示した.
また、ローパスフィルタも重み付け平均フィルタであるため、重み付け平均フィルタと同様にバックグラウンドでもSHIFTが発生することがわかる.
3.ローパスフィルタ関数
function xlpf = LPF(x)
%
persistent prevX
persistent firstRun

if isempty(firstRun)
  prevX = x;
  firstRun = 1;  
end

alpha = 0.7;
xlpf = alpha*prevX + (1 - alpha)*x;

prevX = xlpf;