Hallo,
Ich möchte mit meinem AVR ein Signal analysieren. Es handelt sich um
einen "dreckigen" Sinus. Die Werte Werte stehen in einem Array. Ich
möchte Periodendauer sowie die Werte der Minimas und Maximas ermitteln.
Bisher glätte ich die Werte mit dem gleitenden Mittelwert und
"durchsuche" anschließend das Array nach Maximas mit einer if-Abfrage:
1 | if(data[i - 1] <= data[i] && data[i + 1] <= data[i])
|
2 | //Maxima gefunden
|
Die Periode ermittel ich mit dem Abstand zwischen zwei gefundenen
Maximas.
Leider ist das Verfahren sehr ungenau. Um ungewollte Maximas zu
eliminieren vergleiche ich data[i] mit dem Mittel der Folgewerte. Dies
bringt zwar Besserung, ist aber immer noch unpräzise.
Wie gehe ich die Sache richtig an?
Nicht dass ihr mich falsch versteht, ich möchte von keinem eine fertige
Lösung, aber es wäre toll wenn mir jemand den richtigen Weg zeigen
könnte :-)
Grüße
Wolfgang