Kann jemand etwas Licht in die Frage bringen, wie diese for
-Schleife durch einen einzigen Befehl in MATLAB ersetzt werden kann?3D-Matrix Indizierung mit 2D-Matrix
for i = 1 : size(w,3)
x=w(:,:,i);
w1(i,:)=x(B(i),:);
end
clear x
Hier w
ist ein 3D (x by y by z
) -Matrix und B (1 by z
) ein Vektor Zeilen enthalten in w
zu jeder Schicht gehören. Diese for
-Schleife dauert ungefähr 150 Sekunden, um ausgeführt zu werden, wenn w Schichten tief ist. Ich habe versucht, mit,
Q = w(B,:,:);
Q = reshape(Q(1,:),[500000,2])';
Diese eine Matrix Q
der Größe 500000 X 2 X 500000
und MATLAB warf mir eine Fehlermeldung, Speicher aus gebundenen schafft. Jede Hilfe wäre willkommen!
Hat meine Antwort für Sie funktioniert? Wenn ja, bitte als akzeptiert markieren. –