|
|
Brauche große Matrix Fehler Maximum variable size allowed.. |
|
hacke78 |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 02.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.06.2012, 12:26
Titel: Brauche große Matrix Fehler Maximum variable size allowed..
|
|
Hallo
ich habe knappe 60.000 (59147) Punkte für die ich eine Distanzmatrix gerne berechnen würde, sprich 60kx60k Einträge. Bekomme natürlich wie erwartet folgenden Fehler :
Maximum variable size allowed by the program is exceeded.
Kann man mehr Speicher irgendwie nutzen? Mit einer Auslagerung auf Festplatte vielleicht. Ich habe auch nur Windows XP mit einem Rechner mit 2 Gig Hauptspeicher zur Verfügung, da passt ja glaube ich sowieso nicht ein so großes Array hinein.
Grüße
Jan
|
|
|
|
|
flashpixx |
Forum-Guru
|
|
Beiträge: 355
|
|
|
|
Anmeldedatum: 19.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.06.2012, 12:51
Titel:
|
|
Das Problem kenne ich, Distanzmatrizen zu erzeugen inkl die Daten dazu in Matlab direkt vorzuhalten ist kaum möglich. Jedenfalls habe ich damit sehr schlechte Erfahrungen gemacht.
Ich habe inzwischen dies vollständig in C++ umgesetzt. Ggf kannst Du bei einer solchen Größenordnung die Berechnung in C/C++ auslagern und evtl dann nur die Ergebniss via Mex in Matlab importieren.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 28.06.2012, 22:36
Titel: Re: Brauche große Matrix Fehler Maximum variable size allow
|
|
|
|
|
Hallo hacke78,
Dann schaue Dir die Matrix mal an. Eine 59147x59147 Matrix besitzt 3.5e9 Elemente, wobei sie als DOUBLE 8 Byte per Element benötigen. Damit benötigst Du einen freien zusammenhängenden Block von 28 GB im Speicher. Als Daumenregel ist dazu etwa dreimal so viel Speicher notwendig.
Mit einer 2GB Maschine is da nichts zu machen. Auch wenn man berücksichtigt, dass die Matrix symmetrisch ist hilt das nicht viel. Ein 64-Bit-System ist auf alle Fälle nötig.
Der Vorschlag, dies in C++ zu implementieren, wird nicht helfen, da auch dann genau der gleiche Speicherplatz benötigt wird. Zwar ist es möglich die Matrix in C++ als einzelne Vektoren zu speichern, so dass der benötigte Speicher zumindest nicht zusammenhängend sein muss. Das ist in Matlab aber genauso möglich, z.B. als CELL, welches die einzelnen Vektoren enthält.
Was möchtest Du mit einer so großen Distanz-Matrix anfangen?
Gruß, Jan
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 29.06.2012, 16:26
Titel:
|
|
|
|
|
|
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 - 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.
|
|