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

Variablen aus dem Workspace in Spaltenschreibweise speichern

 

Hiro
Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 10.12.2008, 23:27     Titel: Variablen aus dem Workspace in Spaltenschreibweise speichern
  Antworten mit Zitat      
Hallo zusammen,

habe in all meinen MatLab-Tuts und auch in der Hilfe keine selbige gefunden.

Ich muss zwei Variablen in durch ein Leerzeichen getrennte Spalten in eine ASCII-Datei schreiben.

Wie mache ich das Question Question Question

Wenn ich mit dem in der Hilfe vorgeschlagenen Kommando arbeite, schreibt MatLab zwar im ASCII-Format, nur leider alles in eine Spalte...Crying or Very sad

Code:
save TextLs274.txt timenormal Temp -ascii

und
Code:
save TextLs274.txt timenormal Temp -ascii -tabs

erzeugen jeweils nur eine Spalte.

Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 11.12.2008, 09:31     Titel:
  Antworten mit Zitat      
Das geht z. B. mit fprintf:
Code:

datei  = fopen('TextLs274.txt','wt');
fprintf(datei, '%8.4f %8.4f', [timenormal Temp]);
fclose(datei)
 

Im zweiten Argument von fprintf wird das Ausgabeformat definiert. %8.4f steht z. B. für eine Gelitkommazahl von 8 Zeichen Breite mit vier Nachkommastellen. Das ist C-Syntax, dazu müßtest Du mal in ein C-Handbuch schauen.

Eine einfachere Alternative wäre vielleicht noch:
Code:

x = [timenormal Temp];
save TextLs274.txt x -ascii
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiro
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 11.12.2008, 12:04     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort! Very Happy

Dein erster Vorschlag funzt leider nicht. Die Werte werden nicht
mehr in eine Spalte geschrieben, dafür aber in eine Zeile...

Dafür funzt aber der zweite wunderbar!

Gehe ich recht in der Annahme, dass der Code
Code:
variable1 = [variable2 variable3]

für die Spaltenschreibweise sorgt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 11.12.2008, 12:09     Titel:
  Antworten mit Zitat      
Oh, beim ersten Vorschlag habe ich noch vergessen, nach jeder Ausgabe mit \n einen Zeilenwechsel einzufügen:
Code:

fprintf(datei, '%8.4f %8.4f\n', [timenormal Temp]);
 

Dann sollte auch das funktionieren.

Die Anweisung
Code:

variable1 = [variable2 variable3]
 

verknüpft zwei Variablen horizontal miteinander. Sind also variable2 und variable3 zwei Spaltenvektoren der Dimension nx1, so ist das Ergebnis eine Matrix der Dimension nx2, wobei variable2 in der ersten und variable3 in der zweiten Spalte steht. Der save-Befehl schreibt dann einfach diese Matrix in die Datei.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiro
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 23
Anmeldedatum: 10.12.08
Wohnort: ---
Version: RC2009a (7.7.0)
     Beitrag Verfasst am: 11.12.2008, 12:23     Titel:
  Antworten mit Zitat      
Hehe, funzt immer noch nicht. Sieht nun wie folgt aus:
Code:

  0.0000   0.5000
  1.0000   1.5000
  2.0000   2.5000
  3.0000   3.5000
  4.0000   4.5000
  5.0000   5.5000
  6.0000   6.5000
  7.0000   7.5000
  8.0000   8.5000
  9.0000   9.5000
 10.0000  10.5000
 11.0000  11.5000
 12.0000  12.5000
 13.0000  13.5000
 14.0000  14.5000
 15.0000  15.5000
 16.0000  16.5000
 17.0000  17.5000
 18.0000  18.5000
 19.0000  19.5000
 20.0000  20.5000
 21.0000  21.5000
 22.0000  22.5000
 23.0000  23.5000
130.0000 128.3840
127.7470 127.2633
126.8821 126.5287
126.2184 127.9010
134.1196 142.6454
152.6191 163.4276
174.5661 185.5994
196.1613 205.9543
214.7916 222.4287
228.8450 233.8838
237.6219 239.9836
241.0526 240.8174
239.3216 236.5830
232.6206 227.4596
221.1222 213.6287
205.0024 195.6744
188.6618 184.0234
180.4007 177.3142
174.6481 172.2916
170.1932 168.3052
166.5752 164.9825
163.5325 162.1725
160.9265 159.7488
158.6533 157.6310
 


Es wurden also erst die <timenormal>-Werte zweispaltig geschrieben, dann die <Temp>-Werte.

Die benutzten Befehle waren:
Code:

>> TestLs274.txt = fopen('TestLs274.txt','wt');
>> fprintf(TestLs274.txt, '%8.4f %8.4f\n',[timenormal Temp])
>> fclose(TestLs274.txt)
 


Ist aber auch egal.
Die andere Methode funktioniert auch im Programm, denke ich.



Edit: Yep, tut sie. Der Befehl lautet

Code:

txtplot=[timenormal Temp];
save('PlotDaytimeTemperature.txt','txtplot','-ascii');
 
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 - 2024 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.