INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Signalpunkte selektieren



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.06.2017, 07:52
Beitrag #1

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
Signalpunkte selektieren
Hallo LabVIEW gemeinde,

folgende Situation, ich möchte aus einem Signal ein bestimmte Werte entnehmen und diese zu mehreren kleinen Array´s machen, so das ich anschließend Berechnungen durchführen kann.

Bei dem Signal handelt es sich um ein quasie Rechtecksignal mit einem Rauschen. Für mich interessant sind die Plateaus. Ich möchte von jedem Plateau ein Array bilden und zum Beispiel den Mittelwert errechnen. Aktuell lade ich den "Datensatz" aus einer Datei, in der Realen anwendung Rechne ich mit mehr Daten und die Plateaus werden unterschiedlich viele Werte haben.

Ich habe es jetzt so weit gebracht dass ich zumindestens die steigende, die fallende Flanke und das Plateau im Graphen unterscheiden kann. Doch beim verpacken in ein Array scheitert es grade. Wie "schneide" ich mir die Werte heraus? Habt ihr Ideen wie ich das machen könnte?

Danke für eure Hilfe


Angehängte Datei(en)
0.0 .txt  sym.txt (Größe: 673 Bytes / Downloads: 10)

16.0 .vi  sym.vi (Größe: 28,33 KB / Downloads: 15)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.06.2017, 20:53 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2017 20:54 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 14.620
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Signalpunkte selektieren
Hallo Pre,

Zitat:Ich habe es jetzt so weit gebracht dass ich zumindestens die steigende, die fallende Flanke und das Plateau im Graphen unterscheiden kann.
Das bedeutet, du weißt die Array-Indizes, an der sich jeweils die Flanken und Plateaus befinden.
Und du hast ein Array, in dem alle Werte drinstehen.
Und es gibt da eine Funktion in der Array-Palette, die sich ArraySubset ("Teil-Array") nennt…
Was genau ist dir bei dieser Funktion unklar?

Zu deinem VI: das sieht schon sehr "kompliziert" (nett für "umständlich") aus Big Grin
Warum läuft der Stopp-Button in einer eigenen Schleife? Warum so viele lokale Variablen - bzw. noch schlimmer: Value-PropertyNodes?
Warum verwendest du DeleteFromArray, um ein einzelnes Element aus einem Array zu lesen? Dafür ist doch IndexArray da!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.07.2017, 10:23
Beitrag #3

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: Signalpunkte selektieren
Hallo Gerd,
entschuldige die späte Antwort ich war mit anderen Projekten beschäftigt.

Ja ich habe quasie die interessanten Indizes, jedoch alle interessanten. Meine überlegeung ist, ich muss für jedes mal wenn ein Case true ausgeführt wird die Indezes in ein Array oder irgend eine Datei schreiben, das mache ich solange bis der Case das erste mal wieder false ausgeführt wird. So habe ich die Indezes einer für mich interessanten steigenden Flanke. Nun kann ich mir ja die interessanten Werte aus dem anfangsarray ziehen.

Nur ich weiß leider Nicht wie ich das Umsetzen kann, dass immer wenn ich eine "Truefolge" am Case lese, ich mir ein neues Indize-Array/Datei anlege.
Habt ihr eine Idee, tipps?



Das DeleteFromArray hab ich ersetzt
Das mit den ganzen Schleifen ist durch rum experimentieren entstanden ist natürlich nicht so schön ebenso die PropertyNodes

Danke für die Hilfe Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.07.2017, 10:37 (Dieser Beitrag wurde zuletzt bearbeitet: 05.07.2017 10:37 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 14.620
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Signalpunkte selektieren
Hallo PreView,

Zitat:Meine überlegeung ist, ich muss für jedes mal wenn ein Case true ausgeführt wird die Indezes in ein Array oder irgend eine Datei schreiben, das mache ich solange bis der Case das erste mal wieder false ausgeführt wird.
Willst du etwa bei deinen boolschen Werten (TRUE/FALSE) erkennen, wann der Wert wechselt? Dafür gibt es die Funktion Pt-By-Pt-BooleanCrossing

Zitat:Nur ich weiß leider Nicht wie ich das Umsetzen kann, dass immer wenn ich eine "Truefolge" am Case lese, ich mir ein neues Indize-Array/Datei anlege.
Man nehme ein Schieberegister, wenn man Werte in einer Schleife zwischenspeichern will…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2017, 07:48
Beitrag #5

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: Signalpunkte selektieren
Willst du etwa bei deinen boolschen Werten (TRUE/FALSE) erkennen, wann der Wert wechselt? Dafür gibt es die Funktion Pt-By-Pt-BooleanCrossing…

Nein die Selektierung hab ich ja schon vorgenommen. Ich habe jetzt mal wieder ein wenig Zeit gefunden und hab noch ein wenig rum Probiert.
So wie ich das jetzt umgesetzt habe bekomme ich ein Array mit allen Plateaus jedes einzelne ist grade, in dem Array durch eine Null getrennt.

Jetzt möchte ich Quasie immer dort wo eine Null ist das Array abschneidet ^^ so das ich zu jedem Plateau ein Array erhalte.

und daran scheitere ich. Ich weiß nicht wie ich die Arrays wie gewünscht zerlegen kann.

Danke für eure Hilfe!


Angehängte Datei(en)
17.0 .vi  Sym.vi (Größe: 23,62 KB / Downloads: 1)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2017, 07:54
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 14.620
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Signalpunkte selektieren
Hallo PreView,

Zitat:Jetzt möchte ich Quasie immer dort wo eine Null ist das Array abschneidet ^^ so das ich zu jedem Plateau ein Array erhalte.
Du brauchst genau zwei Funktionen: Search1DArray und ArraySubset…

Search1DArray nach einer Null suchen lassen, gefundenen Index merken.
Search1DArray nochmal nach einer Null suchen lassen, mit diesem Index und dem gemerkten dann ArraySubset aufrufen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.07.2017, 08:43
Beitrag #7

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: Signalpunkte selektieren
Hallo GerdW,

deine Hilfe hat mich jetzt schon ein stück weitergebracht Danke Wink
jetzt habe ich das erste Plateau rausgetrennt, nur einen Knoten gilt es jetzt noch zu lösen. Wohin damit? In eine Arrayvariable und für jedes Plateau eine neue Variable? Wenn ja wie kann ich das so gestallten das Automatisch bei jedem Plateau eine neue Variable angelegt wird?

Ziel ist es ja das ich die Werte der einzelnen Plateaus mit einem anderen Plateau vergleichen kann.

Vielen Dank für die Unterstützung!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2017, 09:09 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2017 09:10 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 14.620
Registriert seit: May 2009

09SP1, 11SP1, 17
1995
DE_EN

10×××
Deutschland
RE: Signalpunkte selektieren
Hallo PreVIEW,

du willst also in einer Schleife dein Array in mehrere Teilarrays zerlegen und diese irgendwo speichern?

Mal ganz allgemein aus den LabVIEW-Grundlagen:
- um Daten in Schleifen zu speichern, verwendet man Scheiberegister…
- wenn man mehrere gleichartige Daten verwalten will, verwendet man Arrays…

Und dazu noch etwas, was über Grundlagen hinausgeht:
In LabVIEW muss ein Array immer "rechteckig" sein, d.h. alle Spalten/Zeilen/etc. sind immer exakt gleich groß. Wenn du jetzt aber mehrere Arrays unterschiedlicher Größe in einem Array sammeln willst, musst du ein "array of cluster of array" erstellen: das Array im Cluster kann dann jeweils eine andere Größe (nicht Dimension!) haben…

Schmeiße diese drei Tipps jetzt mal zusammen in einen Topf und rühre gut um! Big Grin

Edit: Wenn es bei den Plateaus "nur" um deren "Mittelwert" geht, kannst du dir natürlich das "array of cluster of array" ersparen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2017, 09:14
Beitrag #9

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: Signalpunkte selektieren
Hallo GerdW,

Auf das mit den Array´s und Schieberegistern bin ich unterdessen auch schon gekommen ^^
habe jetzt ein 2D array mit den Indexen. Nur muss ich jetzt noch iwie die Anzahl der schleifendurchläufe festlegen. Aktuell werden die Daten mehrfach rein geschrieben.
Trotzdem riesen DankWink

ich meld mich wenn ich es vollends gepackt habe ^^
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2017, 10:43
Beitrag #10

PreVIEW Offline
LVF-Grünschnabel
*


Beiträge: 26
Registriert seit: Dec 2015

2017
2015
DE

98527
Deutschland
RE: Signalpunkte selektieren
So liebe Gemeinde,

ich kann Erfolg vermelden. Wink
Ob das nun die Eleganteste lösung ist weiß ich nicht, aber es läuft.

Wieder einmal ein großes Dank für die Unterstützung!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Plots selektieren wanze 11 4.858 14.09.2010 12:48
Letzter Beitrag: wanze
  Bereich in Graph selektieren Borg-Cube 7 3.211 01.10.2009 10:45
Letzter Beitrag: LabView-Starter

Who read this thread?
11 User(s) read this thread:
PreVIEW, wladimir s, jg, th13, IchSelbst, Freddy, GerdW, Lucki, Trinitatis, Ralfk84, Abongile

Gehe zu: