2015-12-16 19 views
5

私は、与えられたデータセットからフリーク値を排除する方法を探しています。たとえば、次のようにMatlab:データセットのフリーク値を削除する

Dataset to be filtered

すべてのこれらのピークは排除されなければなりません。私はmedfiltのような異なるフィルターを試しましたが、ピークはまだそこにあります。私はローパスフィルターも試しましたが、どちらもうまくいきませんでした。私は信号をフィルタリングする初心者なので、おそらく間違っていました。

x array herey array hereのデータセットをダウンロードできます。

私はループを想像して隣の値を比較することもできますが、組み込み関数が必要ですか?

filtered signal

ピークが消失しているが、その後、私は、私はしたくないこれらの醜いのステップを、取得:

はここmedfilt1(input,15)を使用した結果です。

+5

簡単な方法は、データを差分して、値の変化が特定のしきい値を超えている場所を確認することです。 – excaza

+5

[This](http://i.stack.imgur.com/IdJsU.jpg)は、「データセットのフリーク値」を読むときに関連付けるものです。 –

+0

ハハ・アンドラス、実際に私はドイツ語を翻訳しました。「フリーク値」= D excazaを取得しました。データをループして特定の差分をチェックし、それを排除することを意味します。私はこのアイデアも持っていましたが、機能が構築されているかもしれないと思いました... – deSteini

答えて

7

メジアンフィルタを使用してください。 medfilt1(data,3)は、これが1ピクセルの "宇宙"スパイクの場合に行います。ピークが残っている場合は、5以上にウィンドウサイズを増やす...

EDIT:

enter image description here だから我々は、データが正確に均一ではないことを参照してください。 これはオペアンプのデータがどのように見えるかですあなたのデータを正確にプロットしてください!)質問は今、スパイクのデータかベースラインのデータですか?

+0

私はmedfilt1関数をもう一度試しましたが、最大のピークを取り除くために少なくとも15人必要ですが、ピークを取り除くのではなく、グラフのステップを取得します... – deSteini

+0

より良いですが、.matファイルのデータ自体へのリンクを与えます – bla

+0

私はそれを行った.. thx! – deSteini

関連する問題