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

warum speichert matlab integers manchmal als festkommazahl?

 

zeuS0r
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.02.2011, 15:15     Titel: warum speichert matlab integers manchmal als festkommazahl?
  Antworten mit Zitat      
hallo!

mein problem steht ja schon im titel beschrieben.

matlab speichert meinen vektor, der nur aus ganzen zahlen besteht, manchmal(!) in folgender form:

1.0e+003 * [ 0.882 0.883 0.884 etc. ]

anstatt eben

[ 882 883 884 etc. ]

ich könnte es durch round() z.b. beheben, würde somit aber rechenaufwand erzeugen, der eigentlich unnötig ist. hat jemand ne ahnung wie man das deaktiviert bzw. woran es liegt?
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.02.2011, 15:27     Titel:
  Antworten mit Zitat      
Hallo

Wenn man dem Matlab nicht explizit den Datentyp vorgibt, nimmt
Matlab für die Zahlen standardmäßig den Datentyp Double an.

Code:


will man explizit Integer verwendet muss man das Matlab mittteilen
Code:

a = int32(2)
b = 3
c= a*b
class(c)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
zeuS0r
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.02.2011, 15:41     Titel:
  Antworten mit Zitat      
das ist mir schon klar, ich verstehe nur nicht, warum matlab die ganzen double zahlen eben nur manchmal mit einer potenz angibt.

int32 kann ich nicht verwenden, da ich diesen vektor als x-werte für polyfit brauche und polyfit damit nicht klarkommt.

Zitat:
Undefined function or method 'qr' for input arguments of type 'int16'.


mit round() geht's allerdings!

Razz
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.02.2011, 17:16     Titel:
  Antworten mit Zitat      
denny hat den einen Teil schon beantwortet. Vielleicht ist der andere Teil nur eine Verständnisfrage, dass es um keine Änderung der numerischen Werte ist, sondern nur eine Sache der Darstellung.

Nach den hier vorliegenden Informationen würde ich also einfach sagen: Als DOUBLE lassen, mit POLYFIT arbeiten und ggf. (Zwischenergebnisse) geeignet formatiert ausgeben.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.02.2011, 00:51     Titel: Re: warum speichert matlab integers manchmal als festkommaza
  Antworten mit Zitat      
Hallo zeuS0r,

Die Darstellung im Command-Window kann man mit dem FORMAT-Befehl beeinflussen, z.B.:
Code:
format short
disp([1, 1e10])
format long g
disp([1, 1e10])

Wenn Du SPRINTF oder FPRINTF zur Ausgabe benutzt, hast du noch mehr Einstellmöglichkeiten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Steven

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2011, 17:07     Titel:
  Antworten mit Zitat      
Hallo,


ich habe ein ähnliches Problem nur geht es in die andere Richtung.

Ich arbeite mit sehr kleinen wissenschaftlichen werten der Form 123e-9 bis 12e-11.
Wenn ich diese Werte in eine Matrix speichere rundet MATLAB diese Zahlen auf 0. Ich habe schon probiert die Matrix als double zu definieren, leider mit dem gleichen Ergebnis. Gibt es eine Einstellung das MATLAB auch mit diesen kleinen Zahlen rechnen kann?

Des weiteren werden alle meine Daten nach der 4 Nachkommastelle gerunden, egal wie groß die Zahl vor dem Komma ist.

Ich verstehe nicht warum ein Mathematisches Rechenprogramm soetwas macht.

Mein pobliger Taschenrechner rundet doch auch nicht einfach....

Ich hoffe einer von euch kann mir weiterhelfen =)
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2011, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

wie du beim Ausführen deiner Rechnungen selbst feststellen wirst, rundet MATLAB keineswegs. Es ist lediglich eine Frage der Anzeige. Und dazu hat Jan schon Anregungen gegeben, ich würde nur noch das hinzufügen:
Code:

Das bringt meines Erachtens die schönste Darstellung.

Zitat:
Ich verstehe nicht warum ein Mathematisches Rechenprogramm soetwas macht.

Das würde ich auch nicht verstehen. Aber dem ist ja nun auch nicht so.

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
 
Steven

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2011, 18:52     Titel:
  Antworten mit Zitat      
Also verstehe ich das richtig, das MATLAB zwar gerundete Werte anzeigt aber im Hintergrund mit den normalen Werten weiterrechnet?
Das wäre natürlich weltklasse...

Muss ich dieses
Code:

format short g  
 


nur ins Command-Window eingeben, oder schreibe ich es in den Editor zu meinem Code?

Danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.02.2011, 19:22     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Das wäre natürlich weltklasse...

So isses.

Und einmalig ins Command Window eingeben reicht.

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
 
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.