|
|
"intersect" Funktion arbeitet falsch? mit Beispiel |
|
zevon |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 12.03.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.10.2021, 15:47
Titel: "intersect" Funktion arbeitet falsch? mit Beispiel
|
|
Hallo,
meine intersect Funktion tut nicht was sie soll. Wenn ich das folgende eingebe:
erhalte ich als Ergebnis:
c =
0
0.1000
0.2000
0.4000
0.5000
0.6000
0.7000
0.8000
0.9000
1.0000
Die 0.3000 fehlt einfach Ich habe es doppelt und dreifach gecheckt.
Hat jemand eine Idee, wieso die nicht gespeichert/ausgegeben wird?
Matlab Version: R2021b
Zuletzt bearbeitet von zevon am 06.10.2021, 15:58, insgesamt einmal bearbeitet
|
|
|
|
|
zevon |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 12.03.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.10.2021, 15:52
Titel:
|
|
Bei einem anderen Beispiel, dass etwas länger geht (bis 100), erhalte ich kompletten Käse. Obwohl, bis auf die letzten 13 Ziffern, alles komplett identisch ist.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.10.2021, 15:14
Titel:
|
|
Hallo,
das Problem ist nicht intersect, sondern minimale Rundungsfehler bei : im Zusammenhang damit, dass Zahlen wie 0.3 im Binärsystem keine endliche Darstellung haben.
>> a(31) == b(4)
ans =
logical
0
>> a(31) - b(4)
ans =
-5.5511e-17
Eine Möglichkeit, an das gewünschte Ergebnis zu kommen, wäre zu runden. Die Anzahl der Nachkommastellen kannst du hier zwischen 2 und 14 frei wählen.
Vermutlich steckt hier eine "reale" Anwendung dahinter? Falls sich dort das Problem auf diese Weise nicht addressieren lässt, bitte die "reale" Anwendung genauer schildern.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
zevon |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 12.03.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.10.2021, 18:00
Titel:
|
|
Oh super. Danke! Ich hatte bereits gelesen, dass der == Operator wirklich aufs aller letzte Bisschen einen Vergleich anstellt, und dort ähnliche Probleme auftreten können, wenn beispielsweise unterschiedliche Datentypen verwedet werden.
Das hilft mir weiter! Meine Anwendung funktioniert mit der round function
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|