Wie mache ich eine Kurvenglättung in Matlab?

8

Das blaue Grundstück ist ein lautes Grundstück des ursprünglichen Grundstücks (rot). Gibt es eine Möglichkeit, das blaue Diagramm dem fast roten Diagramm anzunähern?

    
crack_addict 20.10.2012, 11:21
quelle

4 Antworten

13

Definieren wir eine wellige Funktion:

%Vor%

Und fügen Sie viel Lärm hinzu:

%Vor%

Machen Sie nun einen 1D Gaussian Filter, normalisieren Sie ihn und falten ihn mit unserer Funktion:

%Vor%

Lassen Sie uns das Ergebnis sehen

%Vor%

Rot die ursprüngliche Funktion, blau die verrauschte Version, grün die geglättete, 'wiederhergestellte' Funktion.

    
Junuxx 20.10.2012, 12:38
quelle
10

Eine weitere Option ist die Verwendung von 'smooth'. Ich benutze es gerne, weil es eine einzeilige Funktion ist. Den Code der vorherigen Antwort von @Junuxx verwenden:

%Vor%

Wenden Sie jetzt glatt an:

%Vor%

Für weitere Informationen:

%Vor%     
bla 20.10.2012 16:27
quelle
2

Nur um eine zusätzliche Option hinzuzufügen:

Verwenden Sie cftool in der Eingabeaufforderung von Matlab:

    
0x90 20.10.2012 14:04
quelle
2

gausswin() benötigt die Signal Processing Toolbox

smooth() erfordert die Kurvenanpassungs- Toolbox

Wenn Sie diese Toolboxen nicht haben, ist hier eine einfache smooth() Implementierung:

smooth.m:

%Vor%

Ergebnis für y3 = smooth(y2, 15) mit @Junuxx-Code:

    
sergej 03.09.2015 14:53
quelle