LabVIEWForum.de - Wechsel von negativen zu positivem Wert in einem Array registrieren

LabVIEWForum.de

Normale Version: Wechsel von negativen zu positivem Wert in einem Array registrieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
+++ 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ß.
Hi Gerald,

nimm eine While-Schleife, und betrachte immer das vorherige und aktuelle Element (Schleifenzähler nutzen)
sind die Vorzeichen unterschiedlich (erste: +; zweite: -), liegt ein Nulldurchgang mit negativer Steigung vor.

Zähler mit Hilfe eines Shiftregisters die Nulldurchgänge auf - und vergleiche die Anzahl mit einem Control (Vorgabe des Nutzers).
Ist die gewünscht Anzahl der Nulldurchgänge erreicht, oder das Array zu Ende beende ie Schleife.

Gruß
Oliver
Referenz-URLs