Mein MATLAB-Programm N=100
Trajektorien mit T=10^8
Zeitschritten in jedem erzeugt, dhVerarbeitung eine große Datenmenge
x = randn(10^8,100);
Letztlich mag ich diese Datenmenge verarbeiten und eine durchschnittliche Autokorrelation aller Bahnen erhalten:
y = mean(fft(x),2); % output size (10^8, 1)
da nun x
zu groß ist, zu speichern, meine einzige gangbare Weg ist es auf der Festplatte in kleine Stücke speichern von 10^6
x1 = randn(10^6, 100);
x2 = randn(10^6, 100);
etc
und dann y
erhalten, indem jede Bahn Verarbeitung n=1:100
einzeln und Akkumulieren des Ergebnisses:
for n=1:100
y = y + fft([x1(:,n); x2(:,n); ...; x100(:,n)]);
end
Gibt es eine elegantere Möglichkeit, dies zu tun? Ich habe 100 GB RAM und einen Pool von 12 Mitarbeitern.
Haben Sie versucht, die Funktion 'matfile' zu verwenden? Nach Mathworks funktioniert diese Funktion 'Zugriff und Änderung Variablen direkt in MAT-Dateien, ohne in den Speicher zu laden ' – obchardon
hmmmm Sie haben 100 GB RAM und es ist würgen auf 10^8 * 100 ....? – GameOfThrows
WARTEN! verwenden Sie wirklich 100 Variablen namens x1, x2, x3 ... x100 ?? Das ist eine schreckliche Idee. Verwende Zellen oder 3D-Matrizen! –