|
|
Vektoren erzeugen, wohl Problem mit floating format |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2014, 22:31
Titel: Vektoren erzeugen, wohl Problem mit floating format
|
 |
Hallo zusammen,
ich möchte Vektoren erzeugen, nach der Schablone z = 0:x:y.
Wenn ich zb
z = 0 : 0.001 : (20-18.1)
erzeuge, sollte ja mathematisch die 1.9 die letzte Stelle von z sein. In obigem Beispiel ist die letzte Stelle von z aber 1.8990, was wohl damit zu tun hat, dass das mit dem floating nicht hinhaut.
Wenn x und y ganze Zahlen wären, könnte man ja mit "round" auf ganze Integer runden, und das Problem wäre gegessen.
Aber wie kann man es in diesem Fall lösen? Oder anders formuliert:
Wie kann ich es schaffen, dass wenn:
y = irgendeine Rechenoperation.
z = 0:x:y
auch immer
z(end) = y,
falls y mathematisch gesehen ein Vielfaches von z ist.
Vielen Dank schonmal, ich hab mir schon einiges über die floating-Problemtik durchgelesen (wovon ich vorher noch gar nicht gehört hatte), aber ich komm nicht drauf
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 10:16
Titel:
|
 |
Hallo,
das hat in der Tat mit minimalen Rundungsfehlern zu tun.
Falls du weißt, dass in der Syntax a:dx:b das b genau getroffen wird (d.h. b = a + n*dx mit einer ganzen Zahl n), dann kannst du folgendes verwenden:
Der Vektor wird dann auch im Falle kleiner Rundungsfehler bei b enden.
Wenn du auf k Stellen runden möchtest, kannst du grundsätzlich folgendes verwenden:
Allerdings besteht auch hier die Möglichkeit, dass es zu minimalen Rundungsfehlern kommt.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 22:20
Titel:
|
 |
Danke Harald, beide Tipps funktionieren. Ein kleiner Teil von mir hofft noch, dass es irgendwo da draußen eine "schönere" Lösung gibt.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.01.2014, 22:33
Titel:
|
 |
Hallo,
die Symbolic Math Toolbox ermöglicht exakte Rechnungen. Dadurch ist es allerdings typischerweise langsamer.
Andernfalls muss man mit kleinen Ungenauigkeiten leben - übrigens ist das bei anderen Programmiersprachen auch nicht anders.
Eine Möglichkeit, die ich noch sehe:
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.01.2014, 13:35
Titel:
|
 |
ja, das ist perfekt
Danke
|
|
|
|
|
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 - 2025
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.
|
|