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

Zählerschleife

 

Cope
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 03.04.2014, 14:12     Titel: Zählerschleife
  Antworten mit Zitat      
Hallo Zusammen,
ich habe folgende, eigentlich recht simples, Problem.

ich möchte eine Batch-Datei erzeugen. Diese soll folgende Form annehmen:

Pfad Programm Eingabedatei1 Ergebnisdatei Kanäle Integrationskonstante
Pfad Programm Eingabedatei2 Ergebnisdatei Kanäle Integrationskonstante
Pfad Programm Eingabedatei3 Ergebnisdatei Kanäle Integrationskonstante
...

Die verschiedenen Ergebnisdateien sollen durchnummeriert werden. Dies habe ich versucht folgendermaßen zu lösen:

Code:
function batch_datei
% Funktion erzeugt nach der Eingabe verschiedener Parameter eine Batch
% Datei

    % Zuweisung des Dateinamens
    dateiname = 'batch.bat';
   
    % Zugriff auf Datei "dateiname" verschaffen und zum Schreiben (write) öffnen
    fid = fopen (dateiname, 'w');
   
   
    % Parameter abfragen
    [FileName, Pfad] = uigetfile('*.exe', 'Bitte wählen Sie das Programm aus: ');
    Eingabedatei = input('Bitte geben Sie Ihre Eingabedatei ein: ','s');
    Ergebnisdatei = input('Bitte wählen Sie einen Namen für Ihre Ergebnisdatei: ','s');
    Kanaele = input('Bitte wählen Sie die Anzahl Ihrer Kanaele: ','s');
    Integrationskonstante = input('Bitte geben Sie die Integrationskonstante in ms an: ','s');
    Zeitbasis = input('Bitte geben Sie die Zeitbasis für max_EA an: ','s');
    Anzahl = input('Bitte geben Sie die Anzahl der Probanten ein: ');
   
    for (n = 1:Anzahl)
   
    % Text-Zeile in Datei schreiben
    fprintf(fid, '%s %s %s %g %s %s %s %s %s %s %s %s \n', [fullfile(Pfad, FileName),' ',Eingabedatei,n,' ',Ergebnisdatei,' ',Kanaele,' ',Integrationskonstante,' ', Zeitbasis]);
    end

% Datei wieder schließen
fclose(fid);


Doch leider nummeriert mir das Programm in der for-Schleife die Ergebnisdatei nicht durch und fängt auch nach jedem Schleifendurchlauf keine neue Zeile an. Obwohl dies doch eigentlich mit \n passieren sollte.

Beste Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 03.04.2014, 14:17     Titel:
  Antworten mit Zitat      
Code:
  fprintf(fid, '%s %s %s %g %s %s %s %s %s %s %s %s \n', [fullfile(Pfad, FileName),' ',Eingabedatei,n,' ',Ergebnisdatei,' ',Kanaele,' ',Integrationskonstante,' ', Zeitbasis]);

Du musst mMn das n mittels num2str umwandeln, denn so wie du es oben hingeschrieben hast, wird einfach nur ein n hinter Eingabedatei geschrieben, statt matlab zu sagen, dass du die Variable n möchtest.

Code:
  fprintf(fid, '%s %s %s %g %s %s %s %s %s %s %s %s\n', [fullfile(Pfad, FileName),' ',Eingabedatei',num2str(n),' ',Ergebnisdatei,' ',Kanaele,' ',Integrationskonstante,' ', Zeitbasis]);


Außerdem sieht die Menge an %s etwas seltsam aus.
Was genau möchtest du dort schreiben? Denn derzeit verwandelst du alles in EINEN String, benötigst also eigentlich auch nur ein %s.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))

Zuletzt bearbeitet von Mmmartina am 03.04.2014, 14:38, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 03.04.2014, 14:36     Titel:
  Antworten mit Zitat      
Das funktioniert super.... Dankeschön Smile

Und wieso bekomme ich mit \n keine neue Zeile in meiner erzeugten Batch-Datei hin?

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 03.04.2014, 14:47     Titel:
  Antworten mit Zitat      
Cope hat Folgendes geschrieben:
Das funktioniert super.... Dankeschön Smile

Und wieso bekomme ich mit \n keine neue Zeile in meiner erzeugten Batch-Datei hin?

lg


Wie bereits geschrieben: du erstellt derzeit genau EINEN String mit jedem Schleifendurchlauf, da du alles mit eckigen Klammern klammerst.
Behauptest im Code aber, dass du 3x String, 1xFloat, 8xString vorgeben willst - das erwartet Matlab also auch!
Stattdessen bekommt es 1x sting und macht deshalb auch keinen Zeilenumbruch, denn es kam ja erst 1x String.
Das sollte reichen:
Code:
 fprintf(fid, '%s\n', [fullfile(Pfad, FileName),' ',Eingabedatei,num2str(n),' ',Ergebnisdatei,' ',Kanaele,' ',Integrationskonstante,' ', Zeitbasis]);  

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Cope
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 21.02.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 03.04.2014, 14:54     Titel:
  Antworten mit Zitat      
Ahh okay, jetzt alles verstanden.

Danke für die Erklärung und die freundliche Hilfestellung!
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.