Ein Array basierend auf der Dichte filtern

8

Ich habe ein Beispieldiagramm wie eines unter .., das ich mit einem Satz von (x, y) -Werten in einem Array X gezeichnet habe.

Ссылка

Wie Sie sehen können, hat das Bild dichte Spitzenwerte zwischen 4000 und 5100

Meine genaue Frage lautet: Kann ich programmatisch den Bereich finden, in dem der Graph am dichtesten ist?
dh .. mit Array X Wie kann ich den Bereich finden, in dem dieser Graph dicht ist?
für dieses Array wären es 4000 - 5100.

Angenommen, das Array weist der Einfachheit halber nur einen dichten Bereich auf.
Dankbar, wenn Sie einen Pseudocode / Code vorschlagen können.

    
everlasto 27.11.2012, 13:21
quelle

3 Antworten

5

Sie können die Varianz des Signals in einem bewegten Fenster verwenden. Hier ist ein Beispiel (siehe Graphik anbei, wo das Testsignal rot ist, die gefensterte Varianz grün ist und das gefilterte Signal blau ist):

:

Testsignalerzeugung:

%Vor%

Berechnung der Bewegungsfenstervarianz:

%Vor%

bekomme die Indizes, bei denen die Varianz hoch ist (hier wähle ich die Varianz des Kriteriums, die der Hälfte der maximalen Varianz überlegen ist ... du kannst sie an deinen Fall anpassen):

%Vor%

oder filtern Sie das Signal (setzen Sie die Punkte mit niedriger Varianz auf Null)

%Vor%     
Thomas Leonard 27.11.2012, 15:47
quelle
4

Sie können die absolute Differenz zwischen den benachbarten Werten berechnen, dann können Sie die Dinge mit gleitendem Fenster etwas glätten und dann die Regionen finden, in denen die geglätteten absoluten Differenzwerte bei 50% des Maximalwerts liegen.

mit Python (Sie haben Python in Tags) würde dies wie folgt aussehen:

%Vor%     
lenik 27.11.2012 13:38
quelle
0

Sie könnten einen Klassifikationsalgorithmus verwenden (zum Beispiel k-means), um Daten in Cluster aufzuteilen und den am stärksten gewichteten Cluster zu finden

    
Alex 28.11.2012 15:36
quelle

Tags und Links