PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TeX capacity exceeded



menuhin
22-06-2010, 17:29
Hallo,

könnte mir jemand erklären, warum die folgende Fehlermeldung erscheint?

TexCapacity.tex:43:TeX capacity exceeded, sorry [main memory size=8000000]. \end{axis}

Habe gestern den main memory von 3000000 auf 8000000 erhöht.

Minimalbeispiel:


\documentclass{article}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{caption}
\usepackage[list=true]{subcaption}

\begin{document}

\begin{figure}[H]%
\centering
\begin{subfigure}[b]{0.45\linewidth}
\begin{tikzpicture}
\pgfplotsset{every axis y label/.append style={rotate=-90}}
\begin{axis}[
% width=1\linewidth,
% mark options={scale=0.6},
% xmin=-4,
% xmax=4,
% ymin=-4,
% ymax=4,
xlabel={$x_1$},
ylabel={$x_2$}
]
\addplot+[only marks] plot file {Data1.dat};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\begin{subfigure}[b]{0.45\linewidth}
\begin{tikzpicture}
\pgfplotsset{every axis y label/.append style={rotate=-90}}
\begin{axis}[
% width=1\linewidth,
% mark options={scale=0.6},
% xmin=-4,
% xmax=4,
% ymin=-4,
% ymax=4,
xlabel={$x_1$},
ylabel={$x_2$}
]
\addplot+[only marks] plot file {Data2.dat};
\end{axis}
\end{tikzpicture}
\end{subfigure}
\caption{xxx}
\label{yyy}
\end{figure}

\end{document}

Die Dateien (Data1.dat und Data.2.dat) würde ich gerne ebenso hochladen. Die Files haben jedoch jeweils 175KB nachdem komprimiert wurde. Leider kann nur bis zu 100KB hochgeladen weden.

In jedem File befindet sich eine 10.000 mal 2 Matrix an Daten, also sind also pro file 10.000 Datenpunkte enthalten. Falls jemand Lust hat sich der Sache anzunehmen, müsste man sich die Datenpunkte evtl. mit einem Zufallszahlengenerator simulieren.

Habe ich einfach zuviele Datenpunkte verwendet?

Viele Grüße, menuhin

menuhin
22-06-2010, 19:33
Hallo nochmal,

ich habe die 2 Datenfiles in 4 files aufgeteilt.
Es ist also lediglich der Inhalt der Teil2 jeweils in die Teil1 Version zu pasten. Anschießend muß noch die Endung ".txt" in ".dat" umgewandelt werden...

Wäre ziemlich nett wenn sich jemand das Ganze mal ansehen würde.

Isch weiß leider nicht mehr weiter! Vielen Dank im Voraus.

Gruß,

menuhin.

u_fischer
23-06-2010, 15:43
Habe ich einfach zuviele Datenpunkte verwendet?

Warum nimmst du nicht einfach einen Teil der Datenpunkte und testest damit diese Hypothese?

Wenn ich als data1.dat deine Data1teil1-Datei nehmen und nur die erste
tikzpicture, dann habe ich bei main memory=1500000 auch eine capacity exceeded. Wenn ich meinem (MiKTeX-)pdflatex mit --extra-mem-top=2000000 zwei Millionen mehr spendiere, läuft es durch. Also sind deine Chancen gut, mit einer erneuten Erhöhung von main memory das Problem zu lösen.

menuhin
23-06-2010, 17:15
Hallo Ulrike,
stimmt, die Hypothese hätte ich selbst zuvor testen können.:o Seltsam, dass es bei dir durchläuft. Ich habe meinen main memory auf das Maximum 8.000.000 erhöht (wir auch im log file angezeigt) und dennoch läuft es nicht. Trotzdem vielen Dank dafür, dass du dir die Mühe gemacht hast. Jetzt weiß ich zumindest, dass der code funktionieren müsste.

Viele Grüße,

menuhin

u_fischer
23-06-2010, 17:35
Nun, ich habe - wie ich schrieb - nur mit einem Viertel der Daten getestet und nur mit der ersten tikzpicture, also einem Teil deines Codes.

Von daher verstehe ich nicht, warum du dich wunderst, dass es bei mir läuft.

Ich es jetzt mal kurz mit all deinen Daten versucht. Mit 8 Mio geht es nicht, mit 10 läuft es dann.

bobmalaria
23-06-2010, 18:23
hi,

die frage ist ob du diese vielen punkte überhaupt brauchst. reduziere doch mal deine daten und plotte nur jeden 3. oder 4. punkt. vermutlich reicht auch jeder 10.

ich kann aber mit deinem zusammengebauten datenfile alles plotten.

leider ist das resultierende pdf 2.5mb gross, also musst du mir das einfach mal glauben.

das habe ich in meiner konfig stehen wenn ich

initexmf --edit-config-file=pdflatex (in miktex, in texlive ist das vermutlich nicht das gleiche)


aufrufe

main_memory=80000000
stack-size=80000000
save-size=80000000
main-memory=80000000
extra-mem-top=80000000
extra-mem-bot=80000000
pool-size=80000000
max-strings=80000000
EnableWrite18=t

Legion
23-06-2010, 18:39
hm ... nur 10.000 datenpunkte und dann ist schluss? wie ärgerlich, ich bräuchte locker das 20fache für meine Datenauswertung :(

bobmalaria
23-06-2010, 18:46
mit pgfplots ist das etwas schwer. mit pstricks kannst du deutlich größere mengen verarbeiten da es nicht die tex-engine verwendet.

im zweifel also pstricks

ich würde aber meine daten reduzieren. entweder in excel was filtern oder z.b. in programmen wie origin eine "intelligente" datenreduktion durchführen.

ich vermute aber mal das ein leser nicht zwischen 3000 und 1000 datenpunkten in einer punktwolke unterscheiden kann. funktionen/linien-plots brauchen auch sicher keine 10000 stützstellen. ist ja nicht so das ein leser es so genau jemals aus dem diagramm herauslesen könnte....

gruss

Legion
23-06-2010, 19:19
Ja, mit der "intelligenten" Datenreduktion muss ich mich wohl mal vertraut machen. Kenne nur, dass Origin beim Plotten großer Datenmengen in den speed-Modus geht, also nur die Anzahl dargestellter Datenpunkte reduziert.

menuhin
23-06-2010, 19:43
ich würde aber meine daten reduzieren. entweder in excel was filtern oder z.b. in programmen wie origin eine "intelligente" datenreduktion durchführen.

ich vermute aber mal das ein leser nicht zwischen 3000 und 1000 datenpunkten in einer punktwolke unterscheiden kann. funktionen/linien-plots brauchen auch sicher keine 10000 stützstellen. ist ja nicht so das ein leser es so genau jemals aus dem diagramm herauslesen könnte....


Die Daten einfach zu reduzieren ist m.E. kein Allheilmittel. In meinem Fall sind eine hohe Anzahl von Simulationen notwendig, um Realisationen mit sehr geringer Eintrittwahrscheinlichkeit zu generieren. Ex Post dann z.B. jeden 3. Wert zu ignorieren ist wahrscheinlich nicht besonders wissenschaftlich, oder?

Die Frage ist doch warum auf meinem Linux-System die Fehlermeldung erscheint, während mit Windows scheinbar kein Problem entsteht. Jedenfalls vielen Dank für eure guten Hinweise, insbesondere der Tipp pstricks zu verwenden. Werde mich dann nach dem SPIEL mit der Sache weiter beschäften :):) Vielleicht ist es ja einfach nur ein User Problem.

menuhin

Legion
23-06-2010, 21:30
ich kenn mich mit den interna von TeX und so nicht wirklich aus, aber kann es sein, dass bei der Verarbeitung der Daten eine temporäre Datei erzeugt wird und diese 4GB übersteigt? Wegen Linux und FAT32 ...

bobmalaria
24-06-2010, 11:00
hi,

hm, ich sehen das so. du gibt in deiner arbeit an, wie du diese diagramme erstellt hast (also die funktion). die grafik dient dann zur veranschaulichung und zur erklärung.

man muss sich die frage stellen ob es menschenmöglich ist auf einer fläche von 2x2cm 5000 punkte zu erkennen von denen jeder einen durchmesser von 1mm (oder so) hat. ich glaube einfach mal nicht das das jemand kann. deshalb würde ich sagen ist es eventuell bis zu einem gewissen punkt legitim daten zu reduzieren. man kann das ja auch in der caption dazuschreiben (anzahl der samples oder sowas).

du kannst auch die tikz-plots einzeln erstellen und dann als pdf-grafik in dein dokument einbinden, das sollte einfach gehen.

gruss