まずは,ムービーを見てもらったほうが,わかりやすいでしょう.
まず,二つの寄り添う,ウィンドウ,W,を設定します.
そのときの,平均,分散値を,
平均 | 分散 | |
左ウィンドウ | μ1 | S1 |
右ウィンドウ | μ2 | S2 |
とします.
当然ながら,ステップのない場所では,すべての値には変化がありません.
ステップがある場所で,
平均値:一様な上昇
分散値:中央でピークを迎える変化
をします.
そして,
と言う値を計算します.
ここで,r,は,任意の定数で,
の範囲にあります.
そして,結果として,
の値を得ます.
この二つのウィンドウを一つ一つずらしていって,その都度,xfit,をトレースすればよいのです.
もし,ノイズのみでステップのないエリアを計算した場合,
であるので,
となります.
しかし,もし,
の場合には,
となり,結果として,
となります.
逆に,
の場合には,
となり,
となります.
もちろん,この極端な二つの状態の中間状態も取り得ますが,そこは,
r
の値を大きくすることで,その極端さを増すことができます.
実際に,LabViewで作成したプログラムをおいておきますので,自由に確かめてみてください.
Ver.80で保存してあります.
CK filter-80.vi
まずは,”実行”してみて,その効果のほどを見てください.
赤が元波形,白がフィルター後の波形です.
ノイズがかなり減少し,さらに,ステップをきちんと反映しているのがわかります.
次に,”r値”をいじってみてください.
30→1
にすると,だいぶステップが鈍っているのがわかりますね.
”ステップの大きさ”を小さくすると,その効果がはっきりします.
また,データポイントを減少させてみましょう.
”サンプル数”を100,”ウィンドウ幅”を10,まで減らしても,効果があることがわかります.
”サンプル数”を20,”ウィンドウ幅”を5,まで減らしても,まあまあ効果があることがわかります.
これなら,蛍光強度の変化など,ポイント数が少ない場合でも,まあなんとかなりそうですね.
非常に簡単に説明しましたので,詳しくは,原論文を読んでみてくださいね.
なかなか賢い方法を考え出す人もいるもんです,関心関心...