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

csvread-csvwrite- Daten einlesen, bearbeiten, ausgeben

 

parish
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2017, 19:28     Titel: csvread-csvwrite- Daten einlesen, bearbeiten, ausgeben
  Antworten mit Zitat      
Ahoi zusammen!!

Auch ich habe mich nun entschlossen einen neuen Beitrag aufzumachen, da ich mit der SuFu einfach nicht glücklich werde.
Ich hätte die Lösung quasi eh fast schon geschafft, aber leider nur mit einem -work-around-, welcher sicher nicht toleriert wird. (mehr dazu später)


Folgende Aufgabe:
Ich habe eine .dat Datei zum einlesen (wird nicht von Matlab generiert)
Nennen wir sie temperatur.dat
In dieser Datei steht durch die csv Methode das Jahr, Temperaturmittelwert.

BSP:
2002,19.2
2003,20.8
2004,19

Nun muss ich diese Daten einlesen, den letzten ausgegebenen Wert ermitteln (zb. das Jahr 2020), und danach Matlab sagen, dass es noch +20 Jahre weiterrechnen soll.
(die Temperatur kann idF vernachlässigt werden)
Grund: einen linear fit für die nächsten Jahre erstellen...

So... meine Code bis jetzt:


Code:


clc
Array = csvread('temperatur.dat');
col1 = Array(:, 1);
col2 = Array(:, 2);

for startjahr = 1993 : 1 : 2035
csvwrite ('temperatur_erweitert.dat',startjahr);
type temperatur_erweitert.dat
end

 



Array = csvread('temperatur.dat');
col1 = Array(:, 1);
col2 = Array(:, 2);


Hier habe ich die Werte mal eingelesen und diese dann mit col1,2 getrennt, damit ich diese seperat bearbeiten kann.


for startjahr = 1993 : 1 : 2035
csvwrite ('temperatur_erweitert.dat',startjahr);
type temperatur_erweitert.dat
end


Hier hätte ich mir gedacht, ich mache eine for Schleife, welche mir die nächsten paar Jahre erzeugt.
Dies ist natürlich nicht der richtige Code, aber ich bekomme im command window das richtige Ergebnis.

Nur:
wenn ich jetzt die 'temperatur_erweitert.dat' öffne, sehe ich nur eine 1*1 Tabelle mit dem Endwert 2035.


Weiß jemand, wie ich der 'temperatur_erweitert.dat sagen kann, dass sie eine n*1 double matrix werden soll?

Ist es auch möglich, matlab zu sagen, es soll ab den letzten Eintrag +n Jahre weiter eintragen?



Danke schon mal herzlichst für eure Antworten!!


Ahja... der versprochene work- around....
einfach eine zweite .dat Datei manuell erstellen und danach auslesen Cool Cool



Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.06.2017, 22:01     Titel:
  Antworten mit Zitat      
Hallo,

für was denn die for-Schleife?
Code:
startjahr = 1993 : 1 : 2035
csvwrite ('temperatur_erweitert.dat',startjahr');
type temperatur_erweitert.dat


Zitat:
Ist es auch möglich, matlab zu sagen, es soll ab den letzten Eintrag +n Jahre weiter eintragen?

Ziemlich sicher. Um dir helfen zu können, müsste ich allerdings verstehen, was du meinst.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2017, 09:55     Titel:
  Antworten mit Zitat      
Danke Harald!

Du hast natürlich absolut recht... die for Schleife macht wenig Sinn!

Vielen Dank, funktioniert!


Zu meiner Frage....
Ich habe ein Programm, welches automatisch eine .dat Datei einließt.
Wie oben bereits beschrieben:

BSP:
2002,19.2
2003,20.8
2004,19


So.... Nun folgendes:
Es ist davon auszugehen, dass diese Datei von einem externen (nicht Matlab) Programm erstellt wird.

Nun möchte ich aber diese Daten extrapolieren, quasi eine Vorhersage machen.

Nehmen wir an, der letzte Jahreseintrag in dieser Datei war 2005.
Nun möchte ich eine "Vorhersage", eine Extrapolation bis 2015, also + 10 Jahre.
Wenn ich mein Matlab Programm automatisieren möchte, muss ich es irgendwie schaffen, dass Matlab immer den letzten Wert, also idF 2005, erkennt, und erweitert.

So muss ich diese Datei selbst öffnen, nachsehen, und dann weiterrechnen.

Glaubst könnte man das so wie ich es beschrieben habe automatisieren?

Ich hoffe ich habe mich verständlich ausgedrückt :- )

Vielen herzlichen Dank!!

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

probier's doch mal aus.
Letztlich kannst du z.B. interp1 zur Extrapolation verwenden.

Grüße,
Harald
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.