0

Ich schreibe gerade ein Skript, das redundante Datenpunkte aus meinem Diagramm entfernen soll. Meine Daten enthalten Überlappungen von benachbarten Datensätzen und ich möchte nur die Daten, die in der Regel höher sind. (Stellen Sie sich zwei Gauss-Werte mit einem x-Offset vor, die sich geringfügig überlappen. Ich bin nur an den höheren Werten im Überlappungsbereich interessiert, sodass mein endgültiger Graph nicht laut wird, wenn ich die Daten kombiniere, um ein einzelnes Spektrum zu erstellen .Wie kann ich die Schnittmenge von zwei verrauschten Datensätzen finden?

1) die x-Werte sind nicht das gleiche zwischen den beiden Datensätzen, so kann ich nicht sagen nur „max y-Wert bei x, nehmen“:)

meine Probleme Hier sind. Sie sind nahe beieinander, aber nicht gleich.

2) die Abstände zwischen x-Werte nicht gleich sind.

3) Die Daten sind laut, so kann es mehrere Punkte, in denen die Datensätze überschneiden. Und während Gauß-A im Allgemeinen nach dem Schnittpunkt höher ist als Gauß-B, könnte das Rauschen Gauß-B noch einige höhere Werte haben. Das heißt, ich kann nicht einfach sagen "nimm immer die höchsten Werte in diesem Bereich", denn dann würde ich das Rauschen beider Datensätze wild kombinieren.

4) Ich habe n Überlappungen dieses Typs, also brauche ich einen effizienten Algorithmus und alles, was ich mir vorstellen kann, ist irgendwo bei O (n^3), was ungefähr so ​​aussehen würde "für jede Überlappung in zwei Arrays und für jede Kombination von Datenpunkten (x0, y0) und (x1, y1) durchlaufen, bis Sie die niedrigste Kombination von abs (x1-x0) UND abs (y1-y0) "

As I finden Ich bin kein Programmierer, ich bin völlig verloren. Ich war auch nicht in der Lage, einen Algorithmus für dieses Problem irgendwo zu finden - die meisten Algorithmen nehmen an, dass die Einträge in den Arrays, die ich vergleiche, gleiche ganze Zahlen sind, aber ich arbeite mit fast gleichen Schwimmern.

Ich bin mit IDL, aber ich würde auch für einen allgemeinen Algorithmus oder zumindest ein Tipp dankbar sein, was ich versuchen könnte. Vielen Dank!

+0

Ich wähle diese Frage als Wegthema zu schließen, weil durch eigene Zulassung des OP, es nicht über die Programmierung ist. Es geht darum, geeignete Methoden zur Lösung eines Problems zu finden. Es kann auf http://scicomp.stackexchange.com sein, aber überprüfen Sie die Ts & Cs vor dem Posten. –

+0

Ist nicht "geeignete Methoden zur Lösung eines Problems" Art der Definition von Algorithmen? Wie programmiert das nicht? – Fearabbit

+0

Funfact: Ein Graph ist ein Netzwerk und nur das. Die Verwendung des Wortgraphen über eine Handlung ist eine schlechte Praxis, die von schlechten Oberschullehrern weitergegeben wurde. Auch das gehört auf http://stats.stackexchange.com/ –

Antwort

1

Eine Möglichkeit, dies zu tun ist, wenn Sie Gaußsche auf Ihre Daten passen und dann den max nehmen jeden Datenpunkt unter der Annahme gleich die Gaußschen an diesem Punkt.

zu Dataset X2
  • Fit einige Gaußsche G1-Datensatz X1 und einige Gaußsche G2, wo der Mittelwert von G1 kleiner als der Mittelwert von G2 ist:

    Dies kann wie folgt durchgeführt werden.

  • Dann finden Sie ihren Schnittpunkt mit etwas Arithmetik.
  • Dann wird für alle Werte von x kleiner als der Schnittpunkt X1 nehmen und alle Werte von x größer als X2 nehmen die Kreuzung.