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 

Probleme mit Vergleichsoperation "kleiner gleich"



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!

29.08.2008, 08:45
Beitrag #1

Sebby2008 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Aug 2008

8.5
2008
de

79331
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
Hallo Leute!

bin soeben auf ein Problem im Zusammenhang mit der "kleiner gleich" Operation gestoßen.
Ich möchte Messwerte mit deren Sollwerten unter Berücksichtigung einer max. Toleranz
vergleichen.
Bei gewissen Abweichungen, z.B. 0,3 wird der Vergleich "Abweichung kleiner gleich Toleranz" als false
ausgewertet! (0,3 kleiner gleich 0,3 ergibt false!!!!)

Verwende die Basisversion LabVIEW 8.5, VI zum testen im Anhang zu finden!!
Hat jemand eine idee woran das liegen könnte????

Wenn ich die Mess- und Sollwerte nicht übers Frontpanel eingebe, sondern im Programm mit Konstanten
den Vergleich mache, klappt es!
Aber in meinem richtigen Programm werden die Mess- und Sollwerte aus Dateien eingelesen, was ja
auch einer Eingabe entspricht.
Der Vergleich mit den Konstanten diente nur zum Testen.

Könnte es an rundungsfehlern liegen wenn das Doubleformat 0,3 binär für die ALU codiert wird?

Viele Grüße,
Sebby


Sonstige .vi  Vergleich_2.vi (Größe: 9,9 KB / Downloads: 351)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 08:52
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
' schrieb:Hat jemand eine idee woran das liegen könnte????
An der Ungenauigkeit der DBL/SGL-Zahlen. Mach dich mal z.B. bei Wikipedia schlau über Gleitkommazahlen etc.

Ein Wert, der in der Anzeige 0,3 anzeigt, kann tatsächlich bei 0,30000000000000001 liegen. Und damit ist er nicht kleiner gleich. Mit "gleich" zu arbeiten bei Gleitkommazahlen ist immer schlecht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 09:11
Beitrag #3

Sebby2008 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Aug 2008

8.5
2008
de

79331
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
Danke!

Sowas hatte ich mir schon gedacht.
das liegt dann wohl an der ungenauigkeit, da eine double zahl ja binär max. aus 8 byte (64 bit)
dargestellt werden kann, und daher die nachkommastelle(n) nicht immer exakt dargestellt werden kann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 09:51 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2008 09:51 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
Probleme mit Vergleichsoperation "kleiner gleich"
Du kannst das was IchSelbst sagt direkt sehen. Dazu Anzahl der signifikanten Stellen in Deinen Elementen auf 18 setzen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 10:11
Beitrag #5

Sebby2008 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Aug 2008

8.5
2008
de

79331
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
Danke Lucki!

Gibt es denn die Möglichkeit dem LV mitzuteilen, dass intern im Kern alle Werte z.B.
auf 6 Nachkommastellen gerundet werden?!?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 11:05 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2008 11:09 von Lucki.)
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
Probleme mit Vergleichsoperation "kleiner gleich"
' schrieb:Gibt es denn die Möglichkeit dem LV mitzuteilen, dass intern im Kern alle Werte z.B.
auf 6 Nachkommastellen gerundet werden?!?
Das einzige was mir dazu einfällt ist ein neues Datenformat, welches ich erst kürzlich entdeckt habe. Keine Ahnung, ob es das erst seit 8.5 gibt - machmal sieht man ja den Wald vor Bäumen nicht. Ein Hilfe dazu habe ich auch noch nicht gefunden.
Es handelt sich um das Format FIX. Es ist ein Zahl mit Komma, nur der Unterschied zu DBL ist, daß sie intern nicht mit Mantisse und Exponent, sondern als Integer gespeichert ist.
Damit dürften solche "Rundungseffekte ohne sichtbaren Grund" nicht auftreten dürfen. Ausnahme natürlich Divisionsoperationen, die nicht aufgehen.
Habe Dein VI mal umgestelt auf 6 Kommastellen. Keine Ahnung, warum der Konvertierungspunkt erscheint. Weiß das jemand?
Das Ganze funktioniert natürlich nur, wenn der Wertebereich unter Kontrolle ist. Man kann mit FIX nicht mit den Zehnerpotenzen beliebig herumspringen.
Lv85_img
Sonstige .vi  Vergleich_2_1_.vi (Größe: 12,31 KB / Downloads: 273)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.08.2008, 11:29
Beitrag #7

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
Den maximalen Rundungsfehler kann man über Machine Epsilon ausrechnen. Danach kannst du den Fehler zu der zuvergleichenden Zahl addieren und damit vergleichen.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 13:06 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2008 13:12 von Lucki.)
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
Probleme mit Vergleichsoperation "kleiner gleich"
Die Maschinengenauigkeit ist ein Konstante. Hier die Anwendung. Bei Abfrage auf Gleichheit sollte die Alternative ganz oben verwendet werden. Bei Funktionen wie <= usw. wird aber der Vergleich durch Addieren oder Subtrahieren mit Epsilon nicht besser, die Schwelle verlagert sich nur in eine andere Richtung auf einen mindestens eben so "falschen" Wert. Aber in Deinem Beispiel - s.unten - bringt das Hinzufügen von Epsilon zur Toleranz ein Ergebnis, welche Du erwartest und welches Dich zufriedenstellt.
   
Es ist übrigens sehr schade, daß diese polyomorphe Funktion "Gleich?" im Falle eines Gleitkommavergleichs nicht grundsätzlioch als "Gleich innerhalb der Toleranz +-Epsilon?" realisiert ist, dann gäbe es das ganze Problem überhaupt nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 14:03
Beitrag #9

Sebby2008 Offline
LVF-Grünschnabel
*


Beiträge: 37
Registriert seit: Aug 2008

8.5
2008
de

79331
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
Danke, habe auch schon in diese richtung gedacht und werte in der größenordung von E-14
zur toleranz addiert, aber mit der maschinengenauigkeit habe ich jetzt einen festen wert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2008, 16:24
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Probleme mit Vergleichsoperation "kleiner gleich"
' schrieb:Es handelt sich um das Format FIX. Es ist ein Zahl mit Komma, nur der Unterschied zu DBL ist, daß sie intern nicht mit Mantisse und Exponent, sondern als Integer gespeichert ist.
Int64?

Schau mal her. Gibts in Delphi schon seit Jahren. Heißt dort Currency. Ist für kaufmänniche Berechnungen. Dass es keine Rundungsfehler gibt.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
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
  Mittelwert wenn Werte in erster Spalte gleich marc_ampa 6 5.024 21.03.2022 08:38
Letzter Beitrag: marc_ampa
  Audio-Wiedergabe mit kleiner-gleich verknüpfen ocean 1 3.271 07.04.2016 16:03
Letzter Beitrag: GerdW
  Größer, Kleiner UND Gleich jan_1 10 11.874 07.07.2015 13:57
Letzter Beitrag: Kiesch
  Dateiinhalt suchen und anzeigen wenn ein bestimmter Wert gleich ist uecontitech 7 6.442 24.03.2015 10:06
Letzter Beitrag: GerdW
  kleiner Cluster von Datei in großen Cluster einlesen seitzo 2 4.859 06.12.2011 15:52
Letzter Beitrag: seitzo
  Eingang gleich Ausgang in SubVI DrHoas 3 5.558 22.07.2010 12:07
Letzter Beitrag: Lucki

Gehe zu: