goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

MATLAB kompakt

Studierende:
Praktikant (m/w) im Bereich digitale Signalverarbeitung - Simulation eines Funkkommunikationssystems
Mess- und Nachrichtentechnik
ROHDE & SCHWARZ GmbH & Co. KG - Stuttgart

Abschlussarbeit Entwicklung von innovativen Technologien (Leistungselektronik, Regelungstechnik, Matlab; Bachelorarbeit)
Energieversorgung
SMA Solar Technology AG - Niestetal

Entwicklung einer elektrischen Dämpfkraftverstellung mit Softwaresteuerung für Prüfstandsanwendungen
Kfz-Zuliefererindustrie
ZF Sachs Race Engineering GmbH - Schweinfurt

Entwicklung von Reglerstrategien für innovative Aktorik zur Kupplungsansteuerung
Kfz-Zulieferindustrie
ZF Friedrichshafen AG - Friedrichshafen

Motor/Aktuatorregelung für elektronisch mechanische Stellantriebe
Kfz-Zulieferindustrie
ZF Friedrichshafen AG - Friedrichshafen

weitere Angebote

Partner:




Vermarktungspartner


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: 2606
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2007b, R2009b
     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:

a = 2
class(a)
 


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: 1700
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: 3887
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 6.5, 2009a
     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: 5356
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ---
     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:
format short g

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
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: 5356
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ---
     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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.