If-else-Struktur im Formelknoten (formula node) - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: If-else-Struktur im Formelknoten (formula node) (/Thread-If-else-Struktur-im-Formelknoten-formula-node) |
If-else-Struktur im Formelknoten (formula node) - nabla - 30.11.2006 11:56 <div align="left">Hi, ich habe folgendes Problem: Ich möchte eine Variable (u) je nach Größe einer zweiten Variable (uxy) setzen: sl und su sind variablen die die Größen des Bereiches enthalten. In C würde das so aussehen: if (uxy<sl) { u=0; } else if (uxy>su) { u=255; } else { u= ( (uxy-sl)/(su-sl) ) *255; } Wie kann ich das in einem Formelknoten in der bescheuerten LabVIEW-Syntax eingeben. Ich habe bisher folgendes: int8 u = (uxy>su) ? 255: (uxy<sl) ? 0(uxy-sl)/(su-sl))*255; Leider verhält er(LabVIEW) sich nur für den ersten Fall richtig, ansonsten spuckt er immer den Wert von su aus. Schonmal vielen DANK....</div> If-else-Struktur im Formelknoten (formula node) - marker - 30.11.2006 12:09 Hallo nabla, den Formelknoten kannst Du doch in C programmieren. Gruß, Marko If-else-Struktur im Formelknoten (formula node) - nabla - 30.11.2006 12:13 ' schrieb:Hallo nabla, Tatsächlich... Mann und ich fummel mich hier durch diese bescheuerte NI-Syntax... Vielen Dank, warum schreiben die das bei NI nicht einfach hin... mfg nabla If-else-Struktur im Formelknoten (formula node) - Lucki - 30.11.2006 15:55 Also in LV selbst würde es so aussehen und ist mindestens genau so schnell wie ein Formelknoten oder ein eingebundenes C-Programm: [attachment=4199] If-else-Struktur im Formelknoten (formula node) - Kvasir - 30.11.2006 16:33 Finde so geht's sogar noch einfacher. Und mit Aussagen wie "bescheuerter LV Syntax" machst du dir hier keine Freunde If-else-Struktur im Formelknoten (formula node) - Lucki - 30.11.2006 17:01 Zitat:Ich habe bisher folgendes:Die Zeile ist mir rätselhaft. Und wieso soll die "LabVIEW-Syntax" bescheuert sein? In den Formelknoten ist exakt dasselbe einzugeben, was nach Deinen Worten "in C so aussehen würde". Probleme sehe ich allerdings, wenn Du als Ergebnis der Division ein INT8-Zahlenformat vorschreibst. Das führt zu falschen Resultaten, und zwar ohne Fehlermeldung, wenn das Ergebnis nicht in diesen Zahlenraum reinpasst. Ein originales C-Programm würde da auch nicht helfen. ' schrieb:Finde so geht's sogar noch einfacher.Aber natürlich, an diese Möglichkeit hatte ich gar nicht gedacht! Aber nicht nur das, auch die Formel-Syntax läßt sich noch etwas vereinfachen, es geht auch ohne else: [attachment=4204] If-else-Struktur im Formelknoten (formula node) - Lucki - 30.11.2006 17:54 Der edle Wettstreit um den besten Code geht in die nächst Runde. Das hier schmeiße ich in den Ring: [attachment=4205] (Das U8-Format schränkt den Berich von selbst auf 0..255 ein) Angemerkt sei noch, daß es mit I8-Format für u (bereich -128..127) von Nabla natürlich nicht funktionieren kann. If-else-Struktur im Formelknoten (formula node) - Kvasir - 30.11.2006 20:30 Dein Code hier wird an Kürze wohl nicht mehr zu toppen sein. Wobei ich anmerken möchte, dass hier die Eleganz auf Kosten der Allgemeinheit (soll heißen auch andere Werte als 0/255 bei Grenzüberschreitung)des Problems entsteht. If-else-Struktur im Formelknoten (formula node) - nabla - 30.06.2007 15:18 Hab nach längerer Zeit mal wieder hier reingeschaut... Danke für die vielen tollen Beiträge und mit meinem "bescheuerten LabVIEW-Syntax" wollte ich nicht andeuten das LabVIEW bescheuert ist, nur das ich nicht wusste dass man einfach C eintippen kann und daher mich über mich selbst geärgert habe auf Grund meiner Fummelei mit der NI-Systax. Danke nochmals an alle... P.S. Wenn man sonst viel in C programmiert, hat man immer einige Probleme sich an die graphische Programmierung in G zu gewöhnen. Daher mein Formelknoten. Es ist natürlich keine Frage, dass es bestimmt einfacher geht ! If-else-Struktur im Formelknoten (formula node) - rolfk - 02.07.2007 09:12 ' schrieb:Ich habe bisher folgendes: Hmm vielleicht wäre hier Operator Reihenfolge noch eine Ursache. Was gibt denn: int8 u = (uxy>su) ? 255: ((uxy<sl) ? 0(uxy-sl)/(su-sl))*255); Gemäss ANSI C Operator Reihenfolge hat der Bedingungsoperator eine sehr tiefe Priorität, die nur durch Zuweisungen oder dem Komma-Operator noch unterboten wird. Rolf Kalbermatter |