WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

For-Schleife: Bereichsweise rechnen und dann abspeichern

 

cenit87
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 18:00     Titel: For-Schleife: Bereichsweise rechnen und dann abspeichern
  Antworten mit Zitat      
Guten Tag,
eine große/aufwendige Berechnung macht es notwendig immerwieder Variablen nach einer gewissen Anzahl von Iterationsschritten abzuspeichern um Memory/RAM-Problemen aus dem Weg zu gehen.

Habe bereites eine große Varialbe/Matrize "Koordinaten" mit 1.000.000 Reihen und 2. Spalten, diese wird mit einer For-Schleife eingelesen:
Code:

for I = 1:size(Koordinaten,1)      

x_g = Koordinaten(I,1);
y_g = Koordinaten(I,2);
 
%Haufen Berechnungen,
%Erstellung/Berechnung der Variable Kraft1, Kraft2 etc.

Ergebnis1(I,1)=single(Kraft1);
Ergebnis2(I,1)=single(Kraft2);
end
 


Nun möchte ich gerne die Ergebnisse der ersten 1000 Durchläufe von I ( Laufvariable der For-Schleife) in eine Datei speichert, z.B. Ergebnisse_0001.mat. Anschließend soll er weiter rechnen bzw. die For-Schleife weiter durchlaufen, nämlich wieder 1000 Durchläufe und dann wieder in eine Datei speichern, z.B. Ergebnisse_0002.mat usw. Hoffe ihr wisst was ich meine.

Also es geht wohl irgendwie mit eval und num2str aber auch da stehe ich vor einem Rätsel wie ich das mit den 1000 Schritten realisieren soll.

Hoffe ihr könnt mir helfen. Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2013, 18:09     Titel:
  Antworten mit Zitat      
Hallo,

in der for-Schleife:
Code:
if mod(I,1000) == 0
% Speichern soll erfolgen
index = I/1000;
...
end


EVAL sollte nicht nötig sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cenit87
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 02.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 18:24     Titel:
  Antworten mit Zitat      
Danke aber ich glaube es ist nicht genau das was ich brauche. Vielleicht hab ich mich falsch ausgedrückt.
ich will die ersten 1-1000 Berechnungen der For-Schleife als Ergebnisse_0001.mat, dann die 1000-2000 soll er als Ergebnisse_0002.mat und dann 2000-3000 Berechnungen als Ergebnisse_0003.mat

Außerdem wie funktioniert es dann mit dem Speichernamen, das er immer um 1 steigen soll
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 19:59     Titel:
  Antworten mit Zitat      
Doch:
Code:
for I = 1:size(Koordinaten,1)      

  x_g = Koordinaten(I,1);
  y_g = Koordinaten(I,2);
 
%Haufen Berechnungen,
%Erstellung/Berechnung der Variable Kraft1, Kraft2 etc.

  idx = mod(I-1,1000)+1;
  Ergebnis1(idx,1)=single(Kraft1);
  Ergebnis2(idx,1)=single(Kraft2);

  if idx == 1000
    % Speichern soll erfolgen
    index = I/1000;
    save(sprintf('ergebnisse_%04d.mat',index),'Ergebnis1','Ergebnis2');
  end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.