Verfasst am: 12.03.2013, 18:18
Titel: AUsgabe in individuelles txt-File
Hi,
Ich bin Matlab Anfänger und habe es nach einer Woche geschafft ein funktionierendes MAtlab-file zu schreiben (mit stundenlange Recherchen in diesem Forum! DANKE, an dieser Stelle)
Jetzt möchte ich zum krönenden Abschluß meine Daten, die alle in einem Zellen-Array gespeichert sind, da strings und Zahlen enthalten sind, in ein txt-file exportieren, dessen Namen abgefragt werden soll. Nachdem ich das beim file-einlesen schon erfolgreich programmiert habe, habe ich den selben Code kopiert und versucht mit den Befehlen export, fprintf und dlmwrite mein Array zu exportieren. Leider ohne Erfolg. So sieht mein Code aus:
% Datei zu filename zum Schreiben (write) öffnen
fid = fopen( filename, 'w' );
% Check, ob fid gültig ist if( fid < 0) fprintf( 'Kann Datei %s nicht öffnen \n', filename );
return; % im Fehlerfall Funktion beenden end
% Fünfmal Text von der Tastatur holen fprintf( 'Bitte 5 Zeilen Text eingeben : \n' );
for( n = 1:5) % Text von der Tastatur holen
tline = input( '- ' );
% Text-Zeile tline in Datei schreiben fprintf( fid, '%s \n', tline );
end
Verfasst am: 12.03.2013, 18:54
Titel: Re: AUsgabe in individuelles txt-File
Hallo GPSev,
Die Fehlermeldung ist schonmal hilfreich, oder? FPRINTF gibt nur ein Output zurück, und das ist die Anzahl der geschriebenen Elemente.
Allerding benötigt FPRINTF einen File-Identifier als ersten Input, siehe "help fopen". Mir ist nicht klar, was "url" und "msg" sein sollen und wozu die Schleife dient.
UIPUTFILE ist hübscher um einen File-Namen auszusuchen.
Wenn A ein CELL-Array ist, kann man es nicht direkt als Input für FPRINTF verwenden, sondern man benötigt etwas wie:
Code:
A = {'a', 1; 'b', 2};
At = A.';
fprintf(1, 's %g\n', At{:});
Leider funktioniert es immer noch nicht. Ich habe versucht, beide Ansätze zu vereinen und an mein Ergebniszellarray anzupassen. Der Code sieht jetzt so aus:
Code:
% Ausgabe
filename = 'Ausgabe.txt';
% Datei zu filename zum Schreiben (write) öffnen
fid = fopen( filename, 'w' );
% Check, ob fid gültig ist if( fid < 0) fprintf( 'Kann Datei %s nicht öffnen \n', filename );
return; % im Fehlerfall Funktion beenden end
Wenn "tline = At{:,1};" immer noch ein CELL ist, welchen Inhalt hat dann A eigentlich? Dieses Detail können wir nicht erraten, aber es scheint ein CELL aus CELL Strings zu sein. Ist das hilfreich? Dann kann aber der Kasten "Die ersten beiden Zeilen des Arrays sehen wie folgt aus:" nicht stimmen. Zudem erkenne ich nicht, wo die Zeilen aufhören.
Gruß, Jan
GPSev
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 19.03.2013, 17:21
Titel:
Hallo,
Die erste Zeile meines Cells ist nur mit Strings gefüllt (Beschriftung).
Die zweite Zeile beginnt mit der Punktnummer (hier P1) und endet mit den Differenzen. Alle folgenden Zeilen sind aufgebaut wie die zweite Zeile.
Ich will einfach nicht verstehen, dass man das nicht irgendwie exportieren kann!
Die Beschreibung als Text ist deutlich schwerer zu versetehen, als wenn du die entsprechende Matlab-Syntax benutzen würdest. Ich habe keine Ahnung, was "die Punktnummer" ist, und wenn sie "mit den Differenzen endet" ist immer noch nicht erklärt, was im Mittelteil steht.
Zitat:
Ich will einfach nicht verstehen, dass man das nicht irgendwie exportieren kann!
Es lässt sich garantiert so konvertieren, dass man damit arbeiten kann. Bisher ist aber immer noch nicht klar, welches Format die Daten zur Zeit haben, und welches Du benötigst. Siehe z.B. Dein Posting vom 18.03.2013, 16:02. Hier zeigst Du zwar ein Beispiel, aber man muss erraten, wo die Zeile endet und ob das Komma ein Dezimal-Trenner ist oder ob hier ein neues Cell- oder Array-Element beginnt.
Deshalb kann ich Dir noch keinen Ratschlag geben. Bitte stelle die Frage nochmal so klar wie möglich.
Gruß, Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.03.2013, 17:09
Titel:
Sorry,
hier meine bisherverfolgte Logik:
Cell-/Arraytrennzeichen: Leerzeichen od. \t
Dezimaltrennzeichen: . Punkt
Das ganzein Matlab Code:
Die erste Zeile der Ausgabematrix sieht so aus:
Richtig? Wenn Du die daten so postest, dass man sie direkt in Matlab per Copy&Paste einfügen kann, sind Lösungsvorschläge mit viel weniger Aufwand zu erstellen.
Das möchtest Du nun als Text-File speichern, oder?
Sorry, wenn ich mit der Dateneingabe auf der Leitung gestanden bin. Ja, so sehen meine Daten aus.
Dein vorgeschlagener Code funktioniert teilweise. Die erste Zeile funktioniert klaglos auszugeben. bei den restlichen kommt die altbekannte Fehlermeldung:
Das ist bei beiden Lösungsansätzen gleich. Ich habe nur?! eine Studentenlizenz. Kann das damit zusammenhängen?
Vielen Dank
Einstellungen und Berechtigungen
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
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.