26.06.2006, 13:56
+++ Sieht mehr aus, als es in Wahrheit ist. +++
Hallo liebe LV-Gemeinde,
habe mal wieder ein kleines Problem, wo ich selber nicht weiterkomme, deshalb suche ich hier Hilfe und hoffe, dass mir jemand helfen kann.
Ich habe ein Array mit Werten. Der Verlauf dieser Werte ähnelt dem einer Sinuskurve. Das heißt, an bestimmten Stellen wechselt das Vorzeichen.
Es ist so, wenn ich das Signal aufzeichne, dann beginnen die Werte nicht immer bei 0 oder hören wieder bei 0 auf. Es befinden sich also am Anfang und am Ende der Kurve Halbwellen, die ich für meine weitere Berechnung nicht gebrauchen kann. Diese Halbwellen möchte ich jetzt abschneiden und das möglichst genau.
Ich habe mir dazu folgendes überlegt:
1. Abschneiden der Halbwellen am Ende: Zuerst dreht man das Array. Danach sucht ein Algorithmus (für diesen habe ich noch keine tolle Lösung gefunden) nach der Stelle, wo der Wechsel des Vorzeichens von + nach - erfolgt und notiert sich deren Index. Bis zu der Stelle wird das Array dann gekürzt. Somit besitzt das Array jetzt ein sauberes Ende.
2. (Die Perioden meines Signals werden erst im hinteren Drittel relativ konstant, so dass ich nun das umgekehrte Array weiterbetrachten möchte. Für meine weitere Analyse benötige ich gerade diese konstanten Perioden. Am Ende möchte ich einen Mittelwert berechnen. Der wäre ja bei einem nomalen Sinus nahezu Null. Mein Signal besitzt aber noch einen Offset, so dass die Fläche unter den positiven Halbwellen größer ist, als unter den negativen. Deshalb ist mein Mittelwert dann ein positiver Wert. Aber genug dazu.)
Der Anwender soll nun selber festlegen können, wieviele Perioden mit in die Berechnung miteinbezogen werden sollen.
Möchte der Anwender z.B. 5 Perioden in die Mittelung miteinbeziehen, dann soll der zuvor programmierte Algorithmus das Array durchlaufen und, wenn er 5 mal den Nulldurchgang gezählt hat, aufhören und alle Werte bis zu dem Endpunkt in ein neues Array schreiben, um damit dann weiterrechnen zu können (z.B. um den Mittelwert zu berechnen).
Vielen Dank.
Gruß.
Hallo liebe LV-Gemeinde,
habe mal wieder ein kleines Problem, wo ich selber nicht weiterkomme, deshalb suche ich hier Hilfe und hoffe, dass mir jemand helfen kann.
Ich habe ein Array mit Werten. Der Verlauf dieser Werte ähnelt dem einer Sinuskurve. Das heißt, an bestimmten Stellen wechselt das Vorzeichen.
Es ist so, wenn ich das Signal aufzeichne, dann beginnen die Werte nicht immer bei 0 oder hören wieder bei 0 auf. Es befinden sich also am Anfang und am Ende der Kurve Halbwellen, die ich für meine weitere Berechnung nicht gebrauchen kann. Diese Halbwellen möchte ich jetzt abschneiden und das möglichst genau.
Ich habe mir dazu folgendes überlegt:
1. Abschneiden der Halbwellen am Ende: Zuerst dreht man das Array. Danach sucht ein Algorithmus (für diesen habe ich noch keine tolle Lösung gefunden) nach der Stelle, wo der Wechsel des Vorzeichens von + nach - erfolgt und notiert sich deren Index. Bis zu der Stelle wird das Array dann gekürzt. Somit besitzt das Array jetzt ein sauberes Ende.
2. (Die Perioden meines Signals werden erst im hinteren Drittel relativ konstant, so dass ich nun das umgekehrte Array weiterbetrachten möchte. Für meine weitere Analyse benötige ich gerade diese konstanten Perioden. Am Ende möchte ich einen Mittelwert berechnen. Der wäre ja bei einem nomalen Sinus nahezu Null. Mein Signal besitzt aber noch einen Offset, so dass die Fläche unter den positiven Halbwellen größer ist, als unter den negativen. Deshalb ist mein Mittelwert dann ein positiver Wert. Aber genug dazu.)
Der Anwender soll nun selber festlegen können, wieviele Perioden mit in die Berechnung miteinbezogen werden sollen.
Möchte der Anwender z.B. 5 Perioden in die Mittelung miteinbeziehen, dann soll der zuvor programmierte Algorithmus das Array durchlaufen und, wenn er 5 mal den Nulldurchgang gezählt hat, aufhören und alle Werte bis zu dem Endpunkt in ein neues Array schreiben, um damit dann weiterrechnen zu können (z.B. um den Mittelwert zu berechnen).
Vielen Dank.
Gruß.