3

Octaveを使用してclassical Prony's method(またはPronyの分析による場合もあります)をプログラミングしています。スクリプトは、次のようなテスト信号にはかなりうまく動作:Octaveでロバストな最小二乗

t = 1:600; 
sig = exp(-0.01*t).*cos(0.1*t); 

が、ノイズの少量が添加されたときに完全に崩壊:

sig = sig + 0.001*rand(size(sig)); 

問題がpinvを使用して方程式の過剰決定のセットを計算され線形予測がbulitのとき(上記のリンクを参照)。私はより堅牢で外れ値に敏感ではないものが必要です。残念なことに、Octaveコアの機能はこれまで私を助けませんでした。私はolslscovを試しましたが、彼らはそのトリックをしません。

お願いします。

注:古典的なPronyはこの問題のために非常に問題があり、変更されたアルゴリズム(this oneなど)があることを知っています。私は、古典的な方法が機能するために最大限の努力をしていないと感じています。優れたソルバーを使用すると、このようなノイズが残るはずです。

+0

この問題は、Pronyのメソッド(またはその簡潔なバージョン)を実装することによって大幅に改善されます。 – stephematician

答えて

0

ここでの問題は、ノイズとその基礎となる減衰正弦波の時間スケールの違いだと思います。あなたの減衰された正弦波に一致する可能性のある差の方程式の最小次数は2次であるため、3つの隣接するタイムステップだけに及んでいます。しかし、そのようなモデルは、シヌソイドが数十サンプルの周期を有するため、単に雑音信号をオーバーフィットする可能性が非常に高い。ノイズが十分に弱い場合は、予測フィルタがより広い範囲に広がるように、斜めのローディングによって擬似逆行列を正規化したり、モデルの次数を増やしたりすることでPronyの方法を使用できます。

関連する問題