Forum: PC-Programmierung Matlab - 4D-Matrix "Loggen"


von TachAuch (Gast)


Lesenswert?

Hi,

ich hab ein matlab programm:
1
for n=1:100
2
    ....
3
    P = (I-(K*H))*P
4
end

ich würde gerne jeden Schleifendurchlauf von P abspeichern.
Im Stil von:
1
for n=1:100
2
    ....
3
    P = (I-(K*H))*P
4
    P2(n) = P
5
end
- Unable to perform assignment because the indices on the left side are 
not compatible with the
size of the right side. -

Wie geht es richtig?

von TachAuch (Gast)


Lesenswert?

1
PX(n,:,:,:,:) = P;

Kann zu

von Walter T. (nicolas)


Lesenswert?

Schneller:

PX(n,:) = P(:)

Einen einzelnen Vektor speichert Matlab schneller weg als einen Tensor 
höherer Stufe. Nicht vergessen, den Speicherplatz vorher zu reservieren. 
Das macht auch viel in Bezug auf Geschwindigkeit aus.

von Jan (Gast)


Lesenswert?

Wenn die Form erhalten bleiben soll kannst du auch n cell Array nehmen.

Px = cell(100,1)
For ...
   Px{n} = P
End

Ist u.U nicht mehr wesentlich unperformanter in neuen ml Versionen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.