• Moin,

    Anbei eine Möglichkeit um 1D Arrays eine "Kantenglättung" zu verpassen. Genutzt wird die übliche Quadratmethode (also 25% des linken Nachbarn + 25% des rechten Nachbarn + 50% der Mitte = Inhalt des neuen Elements).

    Wissenswertes:
    - Das Array darf nur Zahlen enthalten (int oder float)
    - Es wird das gesamte Array verändert, im ersten Element darf also kein UBound stehen
    - Für große Unschärfewerte (iSmooth) und große Arrays nimmt die Funktion viel Zeit in Anspruch (ein 5000 Teile Array benötigt ca. 1 Sekunde für 100x Glättung)
    - Der letzte Parameter ermöglicht es einzustellen ob Start- und Endpunkt fixiert werden sollen.
    - Es wird angenommen, dass der Abstand zwischen zwei Arrayteilen immer gleich ist. Daher ist diese Glättungsmethode für Ereignisse mit Zeitstempel vollkommen ungeeignet.

    [Blockierte Grafik: http://i.imgur.com/qLMaFaf.png]

    Falls es jemand gebrauchen kann, hier ist es :P

    Edit: Hatte noch C&P Fragmente im UDF-Header... Diese wurden entfernt.

    Edit2: Erklärung der Quadratmethode.
    Jeder Wert aus dem ursprünglichen Array wird in drei Teile mit den Faktoren 1/4 | 1/2 | 1/4 aufgespalten. Der Mittlere Teil wandert "geradeaus" zum Element des neuen Arrays mit gleichem Index, die beiden kleinen Teile wandern zum linken, bzw. rechten Nachbarn. Nach zweimaliger Anwendung dieser Methode ist ein Element des ursprünglichen Arrays also auf fünf Teile mit den Faktoren 1/16 | 4/16 | 6/16 | 4/16 | 1/16 verteilt. In Analogie zum Pascalschen-Dreieck (1x Anwenden = 1 2 1, 2x Anwenden = 1 4 6 4 1, usw) ergibt sich als Grenzwert (viele Anwendungen) eine Normalverteilung. Man sieht, dass trotz der extrem einfachen Überlegung im Endeffekt die mathematisch kompliziertere Gauß'sche Unschärfe angewendet werden kann, ohne irgendwelche nicht elementar integrierbaren Funktionen numerisch zu integrieren, oder sonstige anspruchsvolle Berechnungen durchzuführen.

    lg
    M