Ich habe ein Problem mit Matlab, wenn ich versuche, eine Matrix mit einer sehr großen Größe wie 40000x40000 zu erstellen.
zum Beispiel:
x = Nullen (40000,40000);
Die Fehlermeldung lautet: "Die vom Programm zulässige maximale Variablengröße ist überschritten."
Gibt es eine Lösung?
Auch ich habe eine andere Frage, können wir eine Matrix mit variabler Spaltengröße wie in Java haben.
40000 * 40000 * 8 Bytes pro Nummer = 12 GB, sicherlich haben Sie nicht genug Speicher.
Um eine riesige Matrix mit vielen Nullen zu erstellen, benötigen Sie eine spärliche Matrix :
%Vor%Um ein Array von Varianten zu erstellen, können Sie ein Zellen-Array verwenden:
%Vor%Es gibt viele Dinge, die Sie tun können, wie die verschiedenen Antworten darauf hinweisen. Die richtige Antwort hängt von Ihrem tatsächlichen Problem ab. Brute-Force-Erstellung eines so großen Arrays ist ohne eine 64-Bit-Version von Matlab nicht möglich, plus genug Speicher, um dieses große Array zu speichern oder das Array auf andere Weise zu speichern. Sie können das Array offline speichern und nur das einbringen, was Sie benötigen, wenn Sie es verwenden.
Wenn beispielsweise diese Zahlen immer kleine Ganzzahlen sind, verwenden Sie uint8 oder int8 oder ein logisches Array, sogar ein einzelnes Array, wodurch die Speicheranforderungen im Vergleich zu Double-Arrays reduziert werden. Oder verwenden Sie je nach Bedarf ein Sparse-Speicherformular. Viel hängt davon ab, was Sie mit dem Array tun werden.
Verwenden Sie für eine variable Anzahl von Elementen in einer Zeile ein Zellenarray und kein herkömmliches Array.
Eine Möglichkeit, das Speicherproblem zu umgehen, könnte sein, eine Matdatei für Ihre Matrix zu erstellen. Ich verstehe es so, dass es den Speicher überspringt und direkt auf die Festplatte schreibt. Ich habe das für Matrizen versucht, die zu groß für den Speicher meines muffigen Computers waren, und es war langsam, aber es hat funktioniert. Du musst es wahrscheinlich ein bisschen nach dem anderen aufbauen.
Nein, nun ja, kaufe mehr RAM, wie unten erwähnt. Sparse entfernt nur null Elemente.
Und in Matlab können Sie einfach die neuen Spalten / Zeilen an die Matrix anhängen, um eine größere Matrix zu erstellen.
Ah, aber Sie meinen, können Sie eine Matrix haben, wo eine Spalte 10 Zeilen und eine andere beispielsweise 20 ist. Nein, das kannst du nicht tun. Dachte nicht, dass du in Java tbh. Könntest.
Tags und Links matlab