|
Holger12345 |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 09.07.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.09.2015, 08:21
Titel: Matlab Code verstehen
|
 |
Hallo,
ich muss einen Matlab-Code in C übersetzen und hänge an folgender Stelle:
was genau passiert hier? In meinem Workspace sehe ich, das steps ein Vektor ist, bei dem der 81. und letzte Wert 2^21 ist. Kann mir jemand erklären was da passiert und wie ich das händisch rechnen kann? komme mit dieser 0 : 21/80 : 21 nicht klar.
Danke schon mal für eure Hilfe.
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 29.09.2015, 09:06
Titel:
|
 |
Abgesehen davon, dass man MATLAB Code automatisch in C übersetzen kann:
Der Teil erzeugt erstmal einen Vektor von 0 bis 21 in Schritten mit der Schrittweite 21/80stel.
Der nächste Teil nimmt diesen Vektor in den 2^ Exponenten für jede Vektorelement (2.^ Operation) und dann wird gerundet.
Andreas
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.09.2015, 12:31
Titel: Re: Matlab Code verstehen
|
 |
Hallo Holger12345,
Was bei
0 : 21/80 : 21
genau passiert, ist nicht trivial. Die auftretenden Rundungsfehler können nämlich unerwartete Auswirkungen haben. Siehe:
Der
Operator addiert deshalb bis zur Hälfte des Ausgabe-Vektors auf, und danach subtrahiert er vom berechneten Endwert herunter. Das erlaubt die Rundungsfehler zumindest in einem überschaubaren Rahmen zu halten.
Ich bezweifele, dass es auf diese Feinheiten ankommt bei Deiner Aufgabe. Aber eine vollkommene 1-zu-1 Übersetzung zwischen Sprachen ist extrem schwierig. Oder unmöglich.
Nebenbei setzt Matlab noch die Floating-Point-Einheit auf 53-Bit-Rundungen, auch wenn die üblichen PC-Prozessoren auch mit 64-bit-Mantissen akkumulieren könnten. Da gibt es viele Feinheiten, die dazu führen, dass ein ein von Matlab nach C übersetztes Programm andere Ergebnisse erzeugt. Die Unterschiede können klein und riesig sein.
Nur so als Hinweis.
Gruß, Jan
|
|
|
|
|
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.
|
|