|
|
'zeros'-Funktion beschleunigen |
|
Finn |

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.04.2013, 18:48
Titel: 'zeros'-Funktion beschleunigen
|
 |
Hallo,
ich möchte einen recht großen 3D-Bildstapel anlegen. Die zeros-Funktion braucht dafür extrem lange (nach 3 Minuten abgebrochen).
stack=zeros(3400,3400,300)
Gibt es dafür auch eine schnellere Methode?
Könnte es damit zu tun haben, dass bei der Erstellung des Bildstapels alle Ziffern im Command Window dargestellt werden, bzw. wie kann man dies ausschalten?
Schöne Grüße,
Finn
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.04.2013, 19:46
Titel:
|
 |
Hallo,
die Ausgabe wird durch Strichpunkt am Ende der Zeile unterdrückt.
ZEROS ist schneller, wenn der Datentyp explizit angegeben wird:
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.04.2013, 00:36
Titel: Re: 'zeros'-Funktion beschleunigen
|
 |
Hallo Finn,
Ein 3400 x 3400 x 300 Array vom Typ DOUBLE benötigt 27.7GB. Dies muss als zusammenhängender Block im Speicher frei sein, so dass als grobe Schätzung das doppelte an RAM vorhanden sein sollte, wenn Du nicht auf den sehr langsamen virtuellen Speicher zugreifen möchtest, der die Festplatte nutzt.
Gruß, Jan
|
|
|
Finn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.04.2013, 08:52
Titel:
|
 |
Herzlichen Dank! Mit dem Semikolon funktioniert es jetzt innerhalb einer Sekunde! Habe hier einen 49GB RAM Rechner:) Aber uint16 reicht schon aus.
Schöne Grüße,
Finn
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.04.2013, 11:29
Titel:
|
 |
Hallo Harald,
Ich bin sehr verblüfft, dass "zeros(m,n,'double')" so viel schneller ist als "zeros(m,n)". Das betrifft zumindest das Command-Window:
Das Schreiben mit RAND soll unterdrücken, dass Matlab's JIT so schlau sein könnte, dass Array erst zu erstellen, wenn es auch benötigt wird.
Hier ist tatsächlich die Angabe des Types mehr als 1000 mal schneller (R2009a/64/Win). Aber sowie ich die Codes in eine Funktion schreibe, benötigen beide wieder exatkt die gleiche Zeit. Das wäre ja eigentlich auch logisch, weil die hauptsächliche Arbeit identisch ist, nämlich das Allozieren des Speichers.
Dennoch bin ich neugierig, wieso das im Command-Window einen so großen Unterschied macht. Leider hat die JIT-Acceleration keine Debug-Schnittstelle.
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.
|
|