|
|
unnötige Nullen abschneiden |
|
rooky |

Forum-Fortgeschrittener
|
 |
Beiträge: 76
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2012a
|
 |
|
|
 |
|
Verfasst am: 17.06.2013, 13:20
Titel: unnötige Nullen abschneiden
|
 |
Hallo Gemeinde,
ich möchte aus einer berechneten Matrix alle unnötigen Nullen der Zahlen wegscheiden. Hintergrund des Frage ist, dass ich die Matrix möglichst klein (von der Datengröße) haben möchte. Das Beispiel könnte täuschen, denn ich hab viele ganz große Vektoren abzuspeichern (xGB).
Hier das Beispiel:
Als Ergebnis bekomme ich :
Haben möchte ich aber:
Es könnte auch mal 3.67800 stehen, dann sollte das auf 3.678 geändert werden. Ich will nicht runden, nur die überflüssigen Nullen wegschneiden.
Danke
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 17.06.2013, 14:41
Titel:
|
 |
SAVE schreibt ein komprimiertes MAT File. Ich bezweifle man spart Speicherplatz durch irgendwelche Klimmzüge.
Andreas
|
|
|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 17.06.2013, 14:54
Titel:
|
 |
Wenn du Speicher sparen willst, nutze sparse. Dann sparst du dir alle 0 Werte in einer Matrix.
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 17.06.2013, 17:14
Titel:
|
 |
Hallo,
die Nullen kommen vom Datentyp double. Da braucht jede Zahl nun mal 8 Byte (auch die 0 selbst).
Wenn du an der Genauigkeit einsparst, kannst du auch am Speicherbedarf sparen. Der Datentyp float heißt hier single, dieser verbraucht nur die Hälfte des Speichers.
Grüße,
Nras
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.06.2013, 00:06
Titel: Re: unnötige Nullen abschneiden
|
 |
Hallo rooky,
Die "unnötigen Nullen" erscheinen nur bei der Ausgabe ins Command-Window. Hier kann man die Darstellung mit dem FORMAT-Befehl anpassen:
Nun haben nicht alle Dezimal-Zahlen eine exakte Entsprechung als Binär-Zahl, die ja zur internen Speicherung verwendet wird. Bei 0.999999999999999 bliebe also zunächst zu klären, ob das nun 1.0 ist oder nicht.
Oder anders ausgedrückt: Die Zahlen an sich enthalten keine "unnötigen Nullen", sondern alle verwendeten Bits werden benötigt um IEEE754-doubles eindeutig zu definieren. Diese Nullen erscheinen nur bei bestimmten Arten der Ausgabe im Dezimal-Format.
Eine Idee wäre die Verwendung von SINGLE oder einem der Integer-Formate, falls dies möglich ist.
Gruß, Jan
|
|
|
rooky |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 76
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2012a
|
 |
|
|
 |
|
Verfasst am: 18.06.2013, 07:45
Titel:
|
 |
Hallo Danke für euere Hilfe.
Ich werde das mal mit single versuchen. Es spart Platz (bei mir ca.2GB). Ich muss jetzt nur nochmal prüfen was mit der Genauigkeit passiert.
P.S. mit sparse wird der Speicherbedarf (bei mir) größer
Danke euch
|
|
|
|
|
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.
|
|