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

Daten in eine vordefinierte Matrix einlesen

 

simsl
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2014, 10:01     Titel: Daten in eine vordefinierte Matrix einlesen
  Antworten mit Zitat      
Hallo zusammen,

ich möchte eine Simulation für ein Jahr in stündllichen Zeitschritten durchführen. Ich habe also sämtliche Daten für 8760 Zeiten vorliegen.

Um mir am Ende das Plotten von Tagesverläufen zu erleichtern, möchte ich in Matrixen der Größe 24 x 365 rechnen.

Nun möchte ich meine Grundparameter, wie beispielsweise Wetterdaten, aus Excel in Matlab einlesen. Ich habe diese in Spalten mit je 8760 Zeilen vorliegen.

Mein Problem ist nun, dass ich es nicht schaffe die Daten in eine Matrix der Größe 24 x 365 zu bekommen, hätte dazu jemand eine Idee und eine elegante Lösung?

Vielen vielen Dank schonmal!
Grüße,
Simone

Anbei meine bisherigen Versuche:

A=zeros (365,24);
A=xlsread('weather_input.xlsx',1,'B2:B8761');
-> liefert eine 8760x1 Matrix

A=zeros (365,24);
A(365,24)=xlsread('weather_input.xlsx',1,'B2:B8761');
-> liefert Fehlermeldung: Subscripted assignment dimension mismatch.

A=zeros(365,24);
B=zeros (8760,1);
B=xlsread('weather_input.xlsx',1,'B2:B8761');
C=A+B
-> liefert Fehlermeldung: Error using +
Matrix dimensions must agree.

A=ones(365,24);
B=zeros (8760,1);
B=xlsread('weather_input.xlsx',1,'B2:B8761');
C=A*B
-> liefert Fehlermeldung: Error using *
Inner matrix dimensions must agree.

Und zu guter letzt versuchte ich eine Schleife, habe aber noch keine funktionierende Lösung gefunden
A=zeros(365,24);
for i = (1:8769)
if i==1:24;
A(i)=xlsread('date_input.xlsx',1,'B1:B25');
j=(1:365);
n=(1:365);
n=j*24;
else if i==n;
A(n,n+24)=xlsread('date_input.xlsx',1,'Bn:Bn+24);
end
-> Fehlermeldung: A(n,n+24)=xlsread('date_input.xlsx',1,'Bn:Bn+24);
Error: String is not terminated properly.
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: 16.10.2014, 11:08     Titel:
  Antworten mit Zitat      
Sieht nach Interpolation aus, richtig? Also INTERP1, INTERP2.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
mats
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2014, 11:44     Titel:
  Antworten mit Zitat      
Wenn ich dich richtig verstehe möchtest du die Daten einfach nur anders anordnen. Dafuer gibt es den Befehl reshape:
A=reshape(B,365,24)
Dieser Befehl nimmt sich deine 8760x1 Matrix B und schreibt die ersten 365 Einträge in die erste Spalte von A. Dann die nächsten 365 in die zweite usw. und am Ende hast du A als eine 365x24 Matrix wie du sie haben willst. Allerdings solltest du aufpassen, dass B auch wirklich so angelegt ist. Wenn in B die Daten chronologisch geordnet sind, dann suchst du wahrscheinlich eher

B=xlsread('weather_input.xlsx',1,'B2:B8761');
A=reshape(B,24,365)

so hat dann A in jeder Spalte die 24 Stunden eines Tages. Hab ich dich richtig verstanden?
Private Nachricht senden Benutzer-Profile anzeigen
 
simsl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2014, 12:34     Titel:
  Antworten mit Zitat      
Besten Dank für eure Antworten,

zu Interp. -> danke, das wird mir wahrscheinlich beim plotten noch hilfreich sein

zu reshape -> super das ist genau das was ich suchte!!! besten Dank!
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.