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

Save-Funktion innerhalb einer Schleife mit Laufvariable

 

Stefan76
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 13:34     Titel: Save-Funktion innerhalb einer Schleife mit Laufvariable
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:
Ich möchte eine Schleife bilden in welcher auch die save-Funktion verwendet wird. Der jeweilig gespeicherte Wert soll allerdings jeweils mit der laufvariable anders abgespeichert werden.

Ich habe hier mal meinen Code wie ich ihn bislang habe, aber irgendwie kommt immer ein Fehler. Ich bin immernoch Laie in der Komplexität dieser Software und auch kein Programmierkönig.

Code:
for k = 01:10
    filename = 'E:\...\Velocity_Magnitude\axisAlignedSlice_00.ascii';
    fid=fopen(filename,'rt'); % Datei oeffnen
    temp=textscan(fid,'%*f %*d %*f %f','delimiter',' ','HeaderLines',12);
          % 1., 2., 3. % ignorieren, 4. Spalte einlesen
    fclose(fid);
   
    % in.mat-File abspeichern
   
    save(['filename_k.mat',num2strg(k),'k'],'temp');

    clear filename;
    clear temp;
    clear fid;
    clear ans;

end;


Ich weiß dass diese Schleife momenatn noch keinen Sinn macht denn da fehlen noch andere Operationen die weiteroben ablaufen. Aber die Schleife ist trotzdem so vorhanden. Nun speichert er eben 10mal das gleiche. Das is mir zunächst egal. Es geht lediglich darum dass es am Ende 10 verschiedene (hier:gleicher Inhalt) Files sind. Wie kann ich dann noch einen Pfad mit dem Zielverzeichnis angeben?

Vielen Dank schonmal.

Schöen Grüße,
Stefan
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 14.12.2012, 14:20     Titel:
  Antworten mit Zitat      
Es gibt auch hier im Forum diskutierte Alternativen, aber wenn der Code laufen soll - zuerst mit DISP anschauen was da eigentlich zusammen gebastlet wird. Beispiel

Code:

k=1
disp(['filename_k.mat',num2str(k),'k']);
filename_k.mat1k
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Stefan76
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 16:34     Titel:
  Antworten mit Zitat      
Hi Andreas,

vielen dankl für die prompte antwort.

Da hab ich natürlich einen Fehler gemacht. Habe es nun verbessert und passt soweit. Aber es kommt immernoch eine Fehlermeldung. Die steht irgendwie in Zusammenhang mit der Schreibweise der "SAVE"-Funktion.
Wenn ich die Klammern einfach weglasse schreibt er mir als Dateinamen die Klammer plus Inhalt. Wenn ich wie in der Hilfe beschrieben, schreibe:
save('filename_',num2str(k),temp);
dann funktioniert es auch nicht. Ich weiß einfach nicht wo der Fehler liegt.

Vielleicht weißt Du ja mehr dazu?

Vielen Dank.

Stefan
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 14.12.2012, 16:52     Titel:
  Antworten mit Zitat      
Der String muss durch eckige Klammern eingefasst werden:

Code:

['a', 'b']
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Stefan76
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 17:16     Titel:
  Antworten mit Zitat      
Vielen Dank nun funktioniert das, aber er macht es nur 9 mal und gibt mir dann die Fehlermeldung:

Error using horzcat
CAT arguments dimensions are not consistent.

Meine Schleife sieht k=1:13 vor

WAs kann da jetzt noch falsch sein? Es handelt sich momentan ja noch um immer die selbe Datei.
Sorry dass ich Dich damit u.U. langweile.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 14.12.2012, 17:34     Titel:
  Antworten mit Zitat      
Einfach noch mal den aktuellen Code posten
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Stefan76
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 17:40     Titel:
  Antworten mit Zitat      
Code:
for k = 0001:0014

  %  open powerviz (unix);

   % open data, edit, save AxisAlignedSlice.ascii;


    filename = 'E:\...\Daten\Alt_30_Snapshots\Velocity\Velocity_Magnitude\axisAlignedSlice_00.ascii';
    fid=fopen(filename,'rt'); % Datei oeffnen
    temp=textscan(fid,'%*f %*d %*f %f','delimiter',' ','HeaderLines',12);
          % 1., 2., 3. % ignorieren, 4. Spalte einlesen
    fclose(fid);
   
    % in.mat-File abspeichern
   
    save(['E:\...\Daten\','filename_',num2str(k)'],'temp');

    clear filename;
    clear temp;
    clear fid;
    clear ans;

  % delete('E:\...\Daten\AxisAlignedSlice.ascii');
   
 end;


%%
files=dir('E:\...\Daten\*.mat')';

Utmp = struc2mat;



Gibt es am Ende noch eine Funktion wie ich sie probierte, sie es aber nicht gibt? Dass ich die Dateien öffne und eine Matrix daraus bastle?

Vielen Dank.
Bist ne riesen Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.12.2012, 10:07     Titel:
  Antworten mit Zitat      
In der SAVE Zeile ist ein Hochkomma zu viel. Folgender Besispielcode funktioniert:

Code:

for k = 0001:0014
   k
   temp=1;
   disp(['C:\temp\','filename_',num2str(k)])
   save(['C:\temp\','filename_',num2str(k)],'temp');
 end;
 


Einen fertigen Befehl dieser Art gibt es nicht, aber es gib Tonnen von ähnlichen Fragestellungen in Foren. Es scheint sehr beliebt zu sein eine grosse Anzahl von Dateien zu erzeugen, die durchnumeriert sein sollen oder andere Informationen als Namensbestandteile haben sollen, z.B. das Datum einer Messung. Ich bin nicht immer davon überzeugt, dass das eine gute Idee ist. Definitiv viel zu häufig werden Anforderungen von Betreuern einer Masterarbeit ohne "warum" Fragen übernommen und sehr viel Zeit damit verplempert unsinnige Anforderungen mit riesigen Klimmzügen umzusetzen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Stefan76
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 12:05     Titel:
  Antworten mit Zitat      
Hallo Andreas,

der Fehler lag lediglich an dem " ' " zu viel.

Die weitere Frage war noch: Wie kann ich die nun gespeicherten .mat-Files jetzt wieder einlesen und daraus eine Matrix bilden?
Wenn ich mit der open-Funktion agiere, liest Matlab eine Structure ein. Aber diese zeigt mir dann nicht die 120000x1 double an sondern nur die s struct die mir aber leider nicht viel bringt. Ich habe hier im Forum schon versucht etwas rauszubekommen, aber bin auf meine Art nicht fündig geworden. Es muss ja scheinbar schon einfach sein aus der Struct die eigentlichen Werte auszulesen.

Vielen Dank!

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.12.2012, 16:24     Titel:
  Antworten mit Zitat      
Das syntaktische Pendant zu SAVE ist LOAD, also müsste der Code entsprechend funktionieren.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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.