|
lukel |

Forum-Anfänger
|
 |
Beiträge: 39
|
 |
|
 |
Anmeldedatum: 27.08.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015b
|
 |
|
|
 |
|
Verfasst am: 23.11.2016, 17:12
Titel: Integer-Zahl
|
 |
Hallo Leute,
ich erstelle eine recht große leere Matrix bevor ich diese Fülle. Dafür berechne ich mir die benötigte Anzahl an Zeilen o.
Bei den ausgewählten Zahlen kommt für o=9,35361e+05 raus.
Ich bekomme als ERROR:
Error using zeros
Size inputs must be integers.
Error in exp_qua_Reg (line 25)
RegressionsErgebnisse=zeros(o,5);
Ich glaube es liegt daran das o mit e+05 angegeben wird.
Bei anderen Ausgangswerten bekomm ich aber zum Beispiel o=11333311 raus und dann klappt es. Dort hat das Ergebnis kein e+... obowhl der Wert größer ist.
Wo liegt der Fehler, dass das nicht immer funktioniert?
Mit freundlichen Grüßen
Lukas
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.11.2016, 18:51
Titel: Re: Integer-Zahl
|
 |
Hallo lukel,
Das "e+XY" stammt nur aus der Anzeige am Bildschirm. Intern werden die Zahlen im DOUBLE-Format gespeichert, da kommt also kein "e+" drin vor. Wie die Zaheln im Command-Window angezeigt werden, kann man mit dem
format
Befehl einstellen. Intern ändert das aber nichts an den Werten.
Das Problem ist in der Fehlermeldung bereits eindeutig beschrieben:
"Size inputs must be integers."
Die Werte sind dann keine Integer, also keine ganzen Zahlen.
round
,
ceil
oder
floor
können aus o eine Ganz-Zahl machen. Welcher Befehl davon geeignet ist, hängt von Deinem Problem ab.
"o" ist übrigens ein Variablen-Namen, den man gerne vermeidet, genau wie "l", um die Verwechselungen mit 0 ind 1 zu umgehen.
Gruß, Jan
|
|
|
lukel |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 39
|
 |
|
 |
Anmeldedatum: 27.08.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015b
|
 |
|
|
 |
|
Verfasst am: 23.11.2016, 20:37
Titel:
|
 |
Hey Jan,
Danke. Das hatte ich auch als erstes überprüft, dann aber verworfen. Jetzt aber nochmal genauer hingesehen und weit hinter dem Komme noch eine Stelle gefunden. aber die kann ich ja wegrunden.
Kannst du mir trotzdem sagen warum das so ist. Die kommt aus dem Faktor
(cEn-cSt)/Schrittc+1
Wenn ich da die Zahlen einsetze:
(0,1-0,0 /0,001+1
ist per Hand gleich 21.
Matlab gibt mir für den Term aber 21.000000000000004 raus.
Warum?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.11.2016, 13:34
Titel:
|
 |
|
 |
|
Hallo lukel,
Das ist der zu erwartende Effekt beim Rechnen mit begrenzter Precision. In Matlab werden Zahlen (wie üblich bei Programmiersprachen) im IEEE754-Format gespeichert. Das ist eine binäre Darstellung und fast alle Dezimal-Zahlen haben darin keine exakte Darstellung. Das gilt übrigens auch umgekehrt, ist also keine Besonderheit des Binär-Systems. Ein typisches Beispiel ist:
Da 0.1 keine exakte Darstellung im Binärsystem mit begrenzter Stellenzahl hat, ist 0.1+0.1+0.1 nicht exakt 0.3 (bzw. dessen Darstelluing im Binärsystem).
Das kann auch große Auswirkungen haben:
Das ergibt nicht 1, sondern 0, da 1e17 mehr als die etwa 16 Stellen hat und 1 dazu zu addieren keinen Auswirkungen hat. Es kommt beim Summieren also auf die Reihenfolge der Summanden an, im Gegensatz zur mathematischen Definition.
Bei numerischen Algorithmen muss man das unbedingt berücksichtigen, z.B. wenn man einen Differenzen-Quotienten zur Näherung der Ableitung verwendet. Hier können bei zu kleinen Abständen die Ergebnisse vollkommen zufällig werden, da man durch eine winzige Zahl teilt.
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.
|
|