WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

"intersect" Funktion arbeitet falsch? mit Beispiel

 

zevon
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2021, 16:47     Titel: "intersect" Funktion arbeitet falsch? mit Beispiel
  Antworten mit Zitat      
Hallo,

meine intersect Funktion tut nicht was sie soll. Wenn ich das folgende eingebe:

Code:
a = [0:0.01:1]'
b = [0:0.1:1]'
c = intersect(a,b)


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 Rolling Eyes 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, 16:58, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2021, 16:52     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.457
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.10.2021, 16:14     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2021, 19:00     Titel:
  Antworten mit Zitat      
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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.