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 

Dieses Thema hat akzeptierte Lösungen:

Spalten von 2D-Array einzeln aussortieren und mitteln



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!

16.08.2012, 12:24
Beitrag #1

Thorax Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Aug 2012

2011 SP1
2012
DE



Spalten von 2D-Array einzeln aussortieren und mitteln
Hallo zusammen,

ich bin schon eine ganze Weile am rumprobieren wie ich mein Problem am besten lösen kann. Es sieht folgendermaßen aus:

Ich erhalte von einem Messgerät einen Datenstring in dem die Spannungswerte von 5 Kanälen ausgelesen werden. Diese Messung wiederhole ich 50 mal. Da es sich um ein PWM-Signal handelt, mich aber nur der High-Pegel interessiert und ich das Messgerät nicht exakt triggern kann, muss ich aus den 50 Messwerten pro Kanal die Low-Pegel(bzw die Abtastungen, die die Flanken getroffen haben) rausfiltern und schließlich über die restlichen Messwerte mitteln.

Ich habe das jetzt wie im Anhang gelöst, indem ich den String aufdrösle, sortiere und in ein 2D-Array schreibe. Dieses 2D-Array in ein Double-Array umwandle, schließlich eine Spalte abtrenne, in ein 1D-Array umwandle, dieses Array elementweise mit 0,99*Maximalwert des Arrays vergleiche, diese durch 0 ersetze und schließlich wieder in ein Array schreibe, welches ich wiederum nach 0en durchsuche, diese entferne und schließlich ein Array mit ausschließlich Messwerten, die in meinem Toleranzbereich liegen erhalte. Darüber mittle ich und bekomme den Wert den ich brauche. Jetzt erscheint mir das arg umständlich und ich müsste nun für jeden Kanal den Vorgang wiederholen. Da ich aber irgendwann 20+ Kanale haben werde wird das riesig und vermutlich auch rechenaufwändig.

Meine Frage nun: Geht das eleganter? Ich bin noch nicht so erfahren mit dem Jonglieren mit Arrays und hab sicherlich einige Fehler drin.

Labview-Version lv11_img

Im Anhang ein vereinfachtes VI (ohne das auslesen meines Messgeräts, mit Beispielstring), sowie ein Screenshot einiger Messwerte, da sonst ja nur der Beispielstring eingelesen wird und das "aussortieren" nicht deutlich wird. Für Tipps wär ich sehr dankbar!


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  array-verarbeitung.vi (Größe: 18,88 KB / Downloads: 184)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.08.2012, 12:47
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln

Akzeptierte Lösung

Hallo Thorax,

anbei eine etwas abgeänderte Version. Deine zwei Schleifen am Ende waren schon in der Kategorie Rube-Goldberg: die erste Schleife schreibt Nullen in ein Array, die zweite filtert sie dann wieder aus! Dein Quasi-Indizieren einer Spalte war auch "fragwürdig"...


Angehängte Datei(en)
11.0 .vi  array-verarbeitung.vi (Größe: 16,63 KB / Downloads: 215)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 13:14
Beitrag #3

Thorax Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Aug 2012

2011 SP1
2012
DE



RE: Spalten von 2D-Array einzeln aussortieren und mitteln
Hey GerdW,
Ja das mit dem "ich schreib Nullen rein und filter sie wieder raus" ist mir natürlich auch aufgefallen Big Grin
Deswegen ja hier auch die Frage, wie es eleganter läuft. Ich wusste z.B. vorher nicht, daß ich mit einer Array-Konstanten ein neues Array erstellen kann und daran meine benötigten Werte anhängen kann. Und daß die Auto-Indizierung auch "nach innen" läuft hatte ich auch nicht gewusst. Das hilft mir natürlich ungemein! Besten Dank!
Hätte nicht gedacht, daß mir so schnell und so kompetent geholfen werden kann!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 17:56 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
Gerd hat hier aus unverzeihlicher Faulheit nur die halbe Arbeit geleistet Big Grin. Denn die linke, unverändert übernommene Hälfte des Vis läßts sich genau so radikal vereinfachen wie die rechte.
   
Edit: VI in Übereistimmung mit Bild gebracht!


Angehängte Datei(en)
11.0 .vi  array-verarbeitungWA.vi (Größe: 14,64 KB / Downloads: 170)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 14:20 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 14:21 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.412
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
@Lucki:
Hehe, es gab einen Notruf unseres Prüfstands. Der geht vor!
Smile

Und wenn wir schon dabei sind: Auch wenn der Compiler dies (hoffentlich) wegrationalisiert, muss man nicht in der Schleife jedesmal den String neu konvertieren...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 14:54
Beitrag #6

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
(16.08.2012 14:20 )GerdW schrieb:  @Lucki:
Und wenn wir schon dabei sind: Auch wenn der Compiler dies (hoffentlich) wegrationalisiert, muss man nicht in der Schleife jedesmal den String neu konvertieren...

Doch, so viel Realitätsnähe in der Simulation muss schon sein. Die Stringkonstante steht ja für das Einlesen der Messwerte bei jedem Schleifenduchlauf. Es ist eigentlich gar keine Konstante.
Es ist ausgesprochen positiv, dass Thorax sich die Mühe gemacht hat, das Vi stark zu vereinfachen. Für gewöhnlich wird das ganze Datenerfassungs-Gedöns einfach mit gepostet, wodurch das VI auf unseren PCs mangel Hardware nlcht läuft und wir mehr Mühe haben, die Frage zu beantworten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.08.2012, 15:49
Beitrag #7

Thorax Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Aug 2012

2011 SP1
2012
DE



RE: Spalten von 2D-Array einzeln aussortieren und mitteln
@Lucki:

Danke für deine weitere Verbesserung, leider passt das angehängte VI nicht zum Screenshot.
Die Stringformatierung funktioniert ebenfalls wie beschrieben, allerdings wollte ich gerne die Schleife beibehalten, da die auch noch mit leicht veränderten Strings klarkommt. (Zumindest hab ich was umgestellt und die Ausgabe hat immer noch funktioniert. Ich kann mir da z.B. auch das VDC noch rausholen, falls ichs doch nochmal benötige.) Die Formatierung verschluckt die Buchstaben einfach, wenn ich das richtig interpretiere?!
Meine im Anfangs-VI gepostete, doppelte While-Schleife hat auch einen Zweck. Wie du gut erkannt hast, hängt da eigentlich noch ein ganz schöner Wust an Instrumentenkonfiguration und Mess-Schleifen drin. Das hab ich nur weggelassen und den Beispiel-String reingehängt.

Also ich als Labview-Neuling find das Programm einfach klasse. Es lassen sich so schnell Erfolge erzielen, für die ich in C++ wahrscheinlich wochenlang gebraucht hätte. Allerdings gibt es einfach soviel zu entdecken, daß ich immer wieder googlen muss (naja eigentlich landet man immer hier im Forum), wenn ich bestimmte Funktionen brauch.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 17:53
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
(16.08.2012 15:49 )Thorax schrieb:  Danke für deine weitere Verbesserung, leider passt das angehängte VI nicht zum Screenshot.
Fehler von mir, habe das falsche Vi oben ausgetauscht
Zitat:Die Formatierung verschluckt die Buchstaben einfach, wenn ich das richtig interpretiere?!
Ja, genau so ist es. Wenn also z.B ein Stringelement lautet:
"56.78 mA", dann ist des Zahlenergebnis bei Formatierung mit Formatstring "%f" 56.78. Das ist nur dann anders, wenn ein Trenzeichen dazwischen wäre, also "56.78, mA". Das sind dann 2 Elemente, also bei Konvertierung nach Stringarray "56.78" und "mA", und bei Formatierung nach Zahl 56.78 und 0.
(Das Beispiel ist möglicherweise schlecht gewählt, ich bin mir jetzt nicht sicher, ob das "m" noch als zur Zahl gehörendens milli = Faktor 10^-3 aufgefasst wird. Hab jetzt keine Lust zum Probieren. Wahrscheinlich aber nicht, das Leerzeichen verhindert das)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 17:58 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 17:59 von jg.)
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
(16.08.2012 17:53 )Lucki schrieb:  Ja, genau so ist es. Wenn also z.B ein Stringelement lautet:
"56.78 mA", dann ist des Zahlenergebnis bei Formatierung mit Formatstring "%f" 56.78. Das ist nur dann anders, wenn ein Trenzeichen dazwischen wäre, also "56.78, mA". Das sind dann 2 Elemente, also bei Konvertierung nach Stringarray "56.78" und "mA", und bei Formatierung nach Zahl 56.78 und 0.
Nachtrag: Das gilt so leider nicht bei Standard-LabVIEW-Optionen. Üblicherweise nimmt nämlich LabVIEW das Dezimaltrennzeichen des Betriebssystems für Konvertierungen (@Lucki: ich weiß, du hast das in den Optionen ausgeschalten). In Deutschland kommt dann bei 56.78 und %f nur ein 56 raus. Wenn man auf Nummer sicher gehen will, dann sollte man explizit das Dezimaltrennzeichen beim Formatstring angeben, also z.B. %.;%f oder %,;%f !!!

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.08.2012, 18:21
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Spalten von 2D-Array einzeln aussortieren und mitteln
(16.08.2012 17:58 )jg schrieb:  [quote='Lucki' pid='141076' dateline='1345136033']
Wenn man auf Nummer sicher gehen will, dann sollte man explizit das Dezimaltrennzeichen beim Formatstring angeben, also z.B. %.;%f oder %,;%f !!!
Das kann ich nur unterstreichen. Da ist man auch sicher, wenn ein Programm kompiliert und auf einem anderen PC verwendet wird, dass es da keine unliebsamen Überraschungen gibt.
Ja, ich habe sowohl in den Labview-Grundeinstellungen als auch in den Windows-Einstellungen den Punkt konfiguriert.
Wenn jetzt jemand mit Komma als Dezimalzeichen in den Messdaten kommt, dann kann ich allerdings z.B, die Funktion links im Bild
   
überhaupt nicht verwenden: Mit True wird das LF-Systemzeichen verwendet, mit False das Windows-Systemzeichen - jedes Mal ist es der Punkt. Ich bin dann gewzungen, die Funktin rechts im Bild zu verwenden. Trotzdem: Gute Entscheidung, das provinzlerische Komma in beiden Systemen gar nicht erst zuzulassen.
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
  Case Ausführung - automatisch und einzeln ar7ur8 4 3.565 16.07.2021 15:46
Letzter Beitrag: ar7ur8
  Frontpanelelement im Cluster einzeln steuern L@BTR0N 2 3.828 14.10.2019 09:25
Letzter Beitrag: L@BTR0N
  Messwerte Mitteln Mr. Bean 6 3.489 28.01.2016 10:58
Letzter Beitrag: Mr. Bean
  XControl erstellen, Tabelle mit Spaltentitel über n Spalten dali4u 1 3.430 28.03.2015 15:09
Letzter Beitrag: GerdW
  "Unbenannt"-Spalten in TDMS-Datei zig 13 9.542 03.10.2014 10:25
Letzter Beitrag: zig
  Wie Werte aus 1D Array einzeln integrieren corleone13375 3 4.060 11.09.2014 11:43
Letzter Beitrag: jg

Gehe zu: