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 

Wieso funktioniert das "=" nicht?



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!

17.03.2009, 14:50
Beitrag #1

Xaran Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 200
Registriert seit: Jun 2006

LabView 2009
2006
en

80***
Deutschland
Wieso funktioniert das "=" nicht?
Moin Moin!

Ich habe folgendes Problem: in dem angehängten VI findet die "Suche-Schleife" den vorgegebenen Wert nicht, obwohl er in dem Array vorhanden ist! Wenn derselbe Wert "von Hand" nochmal selber eingegeben wird, funktioniert es - wieso? Pccrash

Im vollständigen VI habe ich es so implementiert, dass man aus einer Textdatei, in der die Daten für ein Richtdiagramm stehen, auch immer nur die Frequenzen auswählen kann, die es auch gibt. Sprich das min, max und das Inkrement werden immer fest eingelesen. Das funktioniert auch, allerdings nur bis zu der Frequenz, die auch im angehängten VI als default eingestellt ist. Größere Frequenzen findet er dann auf einmal nicht mehr... (und ich wage zudem zu behaupten, dass das alles schon mal geklappt hat) Grrr

Schöne Grüße
Lv85_img


Angehängte Datei(en)
Sonstige .vi  Untitled_1.vi (Größe: 9,39 KB / Downloads: 158)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.03.2009, 14:55
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.222
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Wieso funktioniert das "=" nicht?
Nicht-Integer-Zahlen mit "=" zu suchen ist fast immer zum Scheitern verurteilt! Das liegt an Rundungsfehlern...du musst hier mit "in Range" oder ">=" arbeiten

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2009, 14:59
Beitrag #3

Xaran Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 200
Registriert seit: Jun 2006

LabView 2009
2006
en

80***
Deutschland
Wieso funktioniert das "=" nicht?
Danke für die schnelle Antwort. Eigentlich möchte ich auch nicht den "="-Operator verwenden (wenngleich ich bisher das Problem mit den nicht-Integer-Zahlen nicht kannte, also vielen Dank für den Hinweis), sondern den search-1D-array, der ja auch mit double-Werten klarkommen sollte?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2009, 15:56
Beitrag #4

Xaran Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 200
Registriert seit: Jun 2006

LabView 2009
2006
en

80***
Deutschland
Wieso funktioniert das "=" nicht?
Ich habe das "= " durch ein ">=" ersetzt und jetzt klappt es so wie ich wollte. Wenngleich ich mich immer noch wunder, was da vorher schief lief, hakt ich es einfach unter LV-Kuriosität ab. Vielen Dank nochmal für den TippSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2009, 16:39
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Wieso funktioniert das "=" nicht?
' schrieb:hakt ich es einfach unter LV-Kuriosität ab.
Was meinst du damit? Dass Vergleich mit '=' und 1D-DBL-Array-Durchsuchen nicht geht? Das ist keine Kuriosität von LV - das liegt in der Natur dieses Zahlentyps.

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
17.03.2009, 17:16
Beitrag #6

Xaran Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 200
Registriert seit: Jun 2006

LabView 2009
2006
en

80***
Deutschland
Wieso funktioniert das "=" nicht?
Nein, die Kuriosität ist die, dass der als default eingestellte Wert von 84,96 nicht geht - aber wenn ich 84,96 nochmal per Hand direkt eingebe, das Ganze also einfach nochmal überschreibe, klappt es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.03.2009, 19:32
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Wieso funktioniert das "=" nicht?
' schrieb:Nein, die Kuriosität ist die, dass der als default eingestellte Wert von 84,96 nicht geht - aber wenn ich 84,96 nochmal per Hand direkt eingebe, das Ganze also einfach nochmal überschreibe, klappt es.
Auch das ist keine Kuriosität von LV.
Wenn du die Zahl 84,96 eingibst, dann ist diese Zahl auch 84,96. Wenn die Zahl z.B. durch eine mathematische Operation entstanden ist, dann wird sie möglicherweise nur gerundet dargestellt. z.B. mit 6 signifikanten Stellen. Tatsächlich ist diese Zahl möglicherweise aber 84,9600000000001283. Auch dieser Effekt fällt unter die Natur der Zahl - wenn auch nur deren Darstellung.

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
18.03.2009, 07:46
Beitrag #8

Xaran Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 200
Registriert seit: Jun 2006

LabView 2009
2006
en

80***
Deutschland
Wieso funktioniert das "=" nicht?
' schrieb:Auch das ist keine Kuriosität von LV.
Wenn du die Zahl 84,96 eingibst, dann ist diese Zahl auch 84,96. Wenn die Zahl z.B. durch eine mathematische Operation entstanden ist, dann wird sie möglicherweise nur gerundet dargestellt. z.B. mit 6 signifikanten Stellen. Tatsächlich ist diese Zahl möglicherweise aber 84,9600000000001283. Auch dieser Effekt fällt unter die Natur der Zahl - wenn auch nur deren Darstellung.

Das ist mir auch klar. Nur entsteht die Zahl bei mir durch das Einlesen aus einem String. Und bei der String-Zahl Konvertierung habe ich genau zwei Nachkommastellen als Genauigkeit. Oder kann dort, auch wenn man es anders angibt, eine "krumme" Zahl, wie Du sie als Beispiel hattest entstehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2009, 08:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2009 08:39 von rolfk.)
Beitrag #9

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Wieso funktioniert das "=" nicht?
' schrieb:Das ist mir auch klar. Nur entsteht die Zahl bei mir durch das Einlesen aus einem String. Und bei der String-Zahl Konvertierung habe ich genau zwei Nachkommastellen als Genauigkeit. Oder kann dort, auch wenn man es anders angibt, eine "krumme" Zahl, wie Du sie als Beispiel hattest entstehen?

Ja das kann! Um einen String in eine Zahl zu verwandeln muss man rechnen. Dezimalzahlen haben aber die unangenehme Eigenschaft dass sie die Basis 10 haben die sich leider im binären Format des Computers nicht exakt darstellen lässt, wenn man mit Nachkommastellen arbeitet. (Versuch mal 0.1 einzugeben und dann erweitere die Darstellung des Numeric Controls um 20 Stellen nach dem Komma zu zeigen!)

Also Du hast die Zahl 12.345 als String. Die String->Zahl Umwandlung macht dann ungefähr so etwas wie:

resultat = (((((1 * 10 + 2) * 10 + 3) * 10 + 4) * 10 + 5) / 1000

Das Ganze kann noch optimalisiert werden aber das Prinzip bleibt.

Es dürfte wohl deutlich sein dass bei solchen Berechnungen mit Fliesskommazahlen und Zahlen die nicht exakt Vielfache von 2 sind die Genauigkeit des Resultats "nur" im Rahmen der Basisgenauigkeit des Zahlentyps ist. Diese ist ungefähr 8 dezimale Stellen bei Single-Precision Floats und ungefähr 14 dezimale Stellen bei Double-Precision Floats.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2009, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2009 08:59 von Lucki.)
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
Wieso funktioniert das "=" nicht?
Da hier niemend ein Beispiel bringt, hier mal zwei:

Beispiele untere Hälfte:
Die richtige Funktion ist nicht, wie Du sagtest, "Array Interpolieren", sondern "Schwellwert 1D Array". Damit erhält Du immer ein Ergebnis, solange das Element nicht außerhalb der Arrayelemente liegt.
(Du siehst hier auch, daß der interpolierte Index nicht genau 7 ist ind deshalb Dein VI nicht funktionieren konnte. Den gebrochenen Index kannst Du gegebenenfalls zu einer Ganzzahl runden)

Beispiele obere Hälfte: Dein VI modifiziert. Alle Elemente werden in Zahlenstrings mit einer definierbaren Genauigkeit (Anzahl Kommastellen) umgewandelt und das wird miteinander verglichen. Damit gibt es keine Probleme mehr mit der endlichen Maschinengenauigeit bei Zahlen.

   
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
  Die Kommunikation mit dem VI funktioniert nicht Benutzer02 11 4.507 18.10.2021 09:25
Letzter Beitrag: TpunktN
Sad VI funktioniert und EXE nicht Mostro2502 21 7.641 17.06.2020 09:55
Letzter Beitrag: Mostro2502
  Inhalt einer Baumstruktur über Methodenknoten speichern funktioniert nicht... enone 2 3.392 10.05.2019 10:19
Letzter Beitrag: enone
  Schrittmotor Nema 17 per LabVIEW funktioniert nicht! TTT 5 5.454 27.04.2018 08:20
Letzter Beitrag: Freddy
  Formelknoten "funktioniert nicht" Peppiiii 8 5.240 18.04.2017 17:42
Letzter Beitrag: GerdW
  Code funktioniert als SubVI nicht mehr!?! Labview Newbie 4 5.320 14.05.2016 11:26
Letzter Beitrag: IchSelbst

Gehe zu: