|
|
Maximale Variablengröße überschritten - Hilfe!! |
|
PieceX |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.01.2011, 20:21
Titel: Maximale Variablengröße überschritten - Hilfe!!
|
|
Moin, hier kurz und knapp mein Problem!
Ich habe ein 11265x17472 großes Bild, welches sich problemlos mit imread(...) öffnen lässt;
ich erhalte also eine 11265x17472x3 uint8 Matrix.
Das macht meine 4GB Speicher unter Windows 7 64bit Matlab (7.04.365 SP2) auch problemlos mit.
Wenn ich versuche eine Farbkanal-Maskierung zu ertellen, klappt das nur bis zum 2ten Kanal.
Hier das Beispiel:
klappt soweit super
->
??? Maximum variable size allowed by the program is exceeded.
Warum nur?
Ich könnte diese logische Matrix mindestens 8mal im Speicher ablegen
solange sie als einzelne Matrizen deklariert werden also Z1, Z2, ...
pack, oder clear helfen auch nicht weiter.
Bitte helft mir ...
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.01.2011, 21:57
Titel:
|
|
Hallo,
funktioniert folgendes?
Was ist der Output von
Andere Fragen:
- müssen die RGB-Ebenen zwangsläufig gleichzeitig zur Verfügung stehen, oder ginge auch, das nacheinander zu machen?
- Was soll mit den Resultaten gemacht werden?
Grüße,
Harald
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.01.2011, 22:05
Titel: Work Around
|
|
Also so funtkioniert es:
Scheinbar hat Matlab damit Probleme, Speicher vernünftig zu verwalten ... oder wo liegt das Problem?
*edit*
... Jupps, das ging aber schnell, Harald
Hatte schon fieberhaft weiterprobiert und Deinen Post gar nicht so richtig mitbekommen.
Also der Befehl memory liefert mir nichts außer das Prompt *kratz*.
Zu Deinen anderen Fragen:
Die Farbkanäle sind Rückgabewerte einer aufwändigen Segmentierungsfunktion. Sie sollen später wieder in ein Ergebnisbild zurückgespeichert werden. Vorher werden sie tatsächlich getrennt behandelt.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.01.2011, 22:57
Titel:
|
|
Hallo,
die Speicherverwaltung ist in erster Linie Sache des Betriebssystems... und da ist es anscheinend besser, einen großen Block anzufordern als nach und nach aufzustocken.
Es dürfte allerdings auch von Seiten der Geschwindigkeit besser sein, wenn du die Daten zunächst nach und nach verarbeitest. Wenn ein Rechner an seine Speichergrenzen stößt, wird er meist auch langsamer.
Grüße,
Harald
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.01.2011, 23:14
Titel:
|
|
Danke für Deine prompte Antwort, Harald.
Wenn ich Dich richtig verstanden habe, startet Matlab mit ein paar MB Speicher und fordert dann Stück für Stück neuen Speicherplatz vom BS an.
Dabei versucht das BS möglichst passende Stücke freizugeben. Wenn die darin befindliche Variable dann aber noch mehr Platz bekommen soll und dies über den vom BS allozierten Speicherbereich hinausgeht, dann gibt es diese Fehlermeldung ... richtig?
Hast Du eine Ahnung, wie man Matlab von vornherein einen Speicherbereich zuweist, also den Speicherbedarf künstlich aufbläht, damit das BS sich nicht weiter darum kümmern muss?
Wieviel Platz belegt ein logical-Wert bei Matlab eigentlich?
Grusz
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 07.01.2011, 23:38
Titel:
|
|
|
|
|
Hallo PieceX,
Zitat: |
Dabei versucht das BS möglichst passende Stücke freizugeben. Wenn die darin befindliche Variable dann aber noch mehr Platz bekommen soll und dies über den vom BS allozierten Speicherbereich hinausgeht, dann gibt es diese Fehlermeldung ... richtig? |
Nein, nicht richtig. Die Fehlermeldung ist eindeutig nicht "Out of memory", sondern "Maximum variable size allowed by the program is exceeded". Das ist unter 64-Bit-Matlab sehr merkwürdig.
Und "Z(:,:,3) = false([11265 17472]);" überschreitet die Maximalzahl von Elementen nicht mal unter 32-Bit-Matlab. Da gibt es wohl einen anderes Problem, dass auch unter Matlab 6.5 schon auftritt. Ich forsche mal ein wenig...
Zitat: |
Hast Du eine Ahnung, wie man Matlab von vornherein einen Speicherbereich zuweist, also den Speicherbedarf künstlich aufbläht, damit das BS sich nicht weiter darum kümmern muss? |
Für ein einzelnes Array klappt das mit der üblichen Pre-Allocation. Ganz allgemein für alle Arrays, die da so kommen werden, geht das aber nicht.
Zitat: |
Wieviel Platz belegt ein logical-Wert eigentlich? |
Ein Byte. Siehe:
Gruß, Jan
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2011, 00:03
Titel:
|
|
Danke für den Tipp, Jan!
habe ich gesucht.
Hast Du eine Ahnung, warum
nichts macht?
Ich meine, eine ältere 32bit Matlab-Version zu besitzen. Sollte aber aus meiner Versionsangabe hervorgehen ... oder(hab ein wenig bei meinen Angaben geschlampt,, die 64bit bezogen sich auf Win7)?
Grusz
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.01.2011, 00:20
Titel:
|
|
Hallo PieceX,
Das ist ein Bug.
Ich habe solange die zweite Dimension verkleinert, bis ich bei 15887 angekommen bin. Für 15886 klappt es wieder. Ein kurzer Test mit LOG2 verrät, dass Matlab beim Überschreiten der 29-Bit-Grenze einen Fehler produziert.
Ich würde das gerne in der CSSM-Newsgroup diskutieren.
Kannst Matlab einen Bugreport schicken?
Gruß, Jan
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.01.2011, 00:24
Titel:
|
|
Hallo PieceX,
Zitat: |
Hast Du eine Ahnung, warum
nichts macht? |
Unter Matlab 6.5 besteht "memory" nur aus Kommentaren. Der Aufruf von "memory" bewirkt also nichts. "help memory" zeigt dagegen den Hilfe-Text an.
Gruß, Jan
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2011, 01:23
Titel:
|
|
Ah, ja... also ein Bug schmeißt sich mir vor den fahrenden Studienbetrieb ... Ehrlich gesagt hab ich noch nie so einen Bug-Report an Matlab geschrieben;
zudem muss ich nächste Woche die Ergebnisse meinem Prof präsentieren (darf also nicht zu viel Zeit kosten).
Sonst mach ich das natürlich gern ...
Ähhm, doofe Frage, aber muss ich bei Matlab registriert sein, um diesen Bug-Report abschicken zu können. Ist nicht meine Version ...
Dann erstmal gute Nacht, hab heute schon zuviel gemacht
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.01.2011, 02:17
Titel:
|
|
Hallo PieceX,
Zitat: |
Ähhm, doofe Frage, aber muss ich bei Matlab registriert sein, um diesen Bug-Report abschicken zu können. |
Ich finde die Frage gar nicht doof.
TMW hat in der Vergangenheit einen Bugreport von mir zurückgewiesen, weil ich die Ausgabe von "ver" nicht mitgeschickt hatte, und ihnen so der Lizenzschlüssel fehlen würde. Um die Matlab Versions Nummer ging es nicht, da ich mich ausdrücklich auf mehrere Releases bezog. Niedlich - ich wollte ja keinen Support in Anspruch nehmen, sondern ihr Produkt verbessern...
Als ich dann aber die "ver"-Ausgabe von meiner Arbeitsstelle nachgereicht hatte, war das TMW-Team wieder zuvorkommend und freundlich wie immer.
Ich könnte den Report also gerne für Dich schicken. Ich will mich aber nicht mit Deinen Federn schmücken.
Gruß und gute Nacht, Jan
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2011, 09:50
Titel:
|
|
Guten Morgen, Jan!
So etwas habe ich mir schon gedacht ... Bei Deinen Ausführungen muss man sich doch wirklich am Kopf kratzen (oder demonstrativ in der Nase bohren):
Wenn die finanziellen Interessen vor der Qualitätverbesserung des Produktes kommen ... das hat selbst Microsoft *hust* schon herausgefunden.
Ich nutze Matlab lediglich für meine Studienarbeit und habe demnach kein besonderes Interesse, für ein so teures Produkt das Versuchskanninchen zu spielen.
Was die Federn betrifft, so hast Du den Bug in erster Linie gefunden, denn ich bin nur darüber gestolpert. Schmücke Dich ruhig damit, dann hab ich den Stress vom Hals.
Grusz
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.01.2011, 10:14
Titel:
|
|
Hallo PieceX,
welche MATLAB-Version verwendest du? Wenn es tatsächlich 6.5 oder so ist, dann kann es gar nicht auf Windows 7 ausgelegt sein, weil es Windows 7 damals noch nicht gab. Es ist also nicht erstaunlich, wenn dann Probleme auftreten.
Ich habe das gerade bei mir (Windows Vista, 2GB Speicher, 2009a / 7.8 ) ausprobiert, und ich kann Jans Bug nicht reproduzieren.
Es empfiehlt sich so oder so der Umstieg auf eine neuere MATLAB-Version, damit du die Vorteile deines 64-bit - Betriebssystems nutzen kannst.
Um bei deiner Studienarbeit voranzukommen, könntest du zunächst nur einen Farbkanal analysieren und sicherstellen, dass damit alles klappt. Die verbleibenden Kanäle kannst du ja dann genauso analysieren.
Was hält dich im übrigen davon ab, es mit dem (anscheinend auch bei dir funktionierenden)
umzusetzen?
Grüße,
Harald
|
|
|
PieceX |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 11.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.01.2011, 12:19
Titel:
|
|
Tag, Harald!
Zitat: |
welche MATLAB-Version verwendest du? |
Meine Versionsangabe aus dem ersten Post mußt Du wohl überlesen haben.
Zitat: |
Matlab (7.04.365 SP2) |
Zitat: |
Was hält dich im übrigen davon ab, es mit dem (anscheinend auch bei dir funktionierenden)
umzusetzen?
|
Mich hält nichts davon ab, die funktionierende Variante zu verwenden (ich verwende sie bereits). Jedoch um zukünftige Fehler dieser Art zu vermeiden bin ich doch (natürlich auch für die Mitleser, bei denen ein ähnliches Problem vorliegt) bemüht, dem Fehler auf den Grund zu gehen.
Zitat: |
Es empfiehlt sich so oder so der Umstieg auf eine neuere MATLAB-Version, damit du die Vorteile deines 64-bit - Betriebssystems nutzen kannst.
|
Was die aktuellere Matlab-Version angeht: Sie wird nicht gerade verschenkt, weshalb ich mich mit der geliehenen, alten Version begnügen muss.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.01.2011, 12:39
Titel:
|
|
Hallo,
die Versionsangabe am Anfang hatte ich tatsächlich überlesen bzw. fehlinterpretiert.
Da du ja jetzt einen Workaround für das Problem kennst, sollte es dich zumindest nicht mehr bei deiner Arbeit behindern, wie du zuvor angedeutet hast.
Grüße,
Harald
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|