habe in einem mat-file Wetterstationsdaten vom Jahr 2004 bis zum Jahr 2013. In diesem Mat-file sind folgende Spalten vorhanden:
Jahr/Monat/julianischer Tag/Tag des Monats/Stunde/10-min-Intervall/Temperatur/Luftfeuchtigkeit
Gesucht wäre nun die Berechnung der Stundenmittel aus den 10-Minuten-Werten der Temperatur für eine gewisse Periode. Diese Periode erstreckt sich zum Beispiel vom 15.7.2004 bis zum 8.8.2004.
Der folgende Ansatz scheint nicht zu funktionieren und liefert die Fehlermeldung: Not enough input arguments. für die Zeile
sdate=datenum(year,month,day,hour,minute,ss);
Versuche mal mit Debugger, setzte Breakpoint in die Zeile und schaue was für die Werte dort übergeben werden? Oder kannst du deine Werte hier posten mit denen du deine Funktion testest.
Wenn ich dein Code genauer reinschaue, ist diese Zeile je nicht mal nötig, weil du 3 Zeilen später diese Variable wieder überschreibst.
siehe rot markierten Zeilen.
function [Tmeanh]=berechnung_temperaturmean(year,jday,month,day,hour,minute,T,RH,Swin)
% date=[year month day hour minute]
sdate=datenum(year,month,day,hour,minute,ss);
sdatelim=[datenum(2004,07,15,00,00) datenum(2004,08,04,23,59)]
dt=1/24;
sdate=sdatelim(1):dt:sdatelim(2);
for i = 1:length(sdate)
j=find(sdate >= sdate(i) & sdate < sdate(i)+dt);
Tmeanh(i)=mean(T(j));
end
glazio1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.11.2014, 18:51
Titel:
Vielen Dank für die Hilfestellung. Die rote Zeile wird in der Tat überschrieben, aber auch unter geänderten Variablennamen (ohne Überschreiben) ergibt sich dieselbe Fehlermeldung.
Übergeben werden in der Zeile sdate=datenum(year,month,day,hour,minute) die jeweiligen Spalten aus dem mat-file mit Jahreszahl, Monat, Tag, Stunde und die Minuten im 10 min Intervall (0,10,20,30,40,50,60) für jede Stunde.
Das Datum muss mit datenum konvertiert werden, da ja ansonsten keine Berechnung in MATLAB möglich ist.
Kann man aus den 10-min-Mittelwerten einen Stundenmittelwert mit folgender for-Schleife überhaupt berechnen?
Code:
for i = 1:length(sdate)
j=find(sdate >= sdate(i) & sdate < sdate(i)+dt);
Tmeanh(i)=mean(T(j));
end
Vielen Dank für die Hilfestellung. Die rote Zeile wird in der Tat überschrieben, aber auch unter geänderten Variablennamen (ohne Überschreiben) ergibt sich dieselbe Fehlermeldung.
Das war nur ein Hinweis, damit du überprüfst die Richtigkeit.
Bitte den geänderten Code hier posten.
Zitat:
Das mat-file kann ich leider nicht anhängen, da die Veröffentlichung dieser Daten nicht erlaubt ist.
Du kannst die MAT-File ja zippen und dann das ZIP-File anhängen.
Zitat:
sdate=datenum(year,month,day,hour,minute)
Da müssen 6 Parameter übergeben, siehe in der Doku
Dies ist der abgeänderte Code. Der Variablenname wurde nun geändert, damit die beiden Zeilen nicht überschrieben werden. Die Fehlermeldung erscheint jedoch noch immer für die Zeile mit der Umrechnung in die Serial date Number.
Ich hänge einmal mein gesamtes m-file an. Die Daten-Dateien (mat-file) darf ich aus urheberrechtlichen Gründen nicht anhängen.
gradtagklassisch.m
Beschreibung:
alle subfunctions für das einlesen der pegeldaten sind für das Problem irrelevant
mat-file metinput_mad_10.mat darf aus urheberrechtlichen Gründen nicht angehängt werden
in Zeile 16 deines M-Files(gradtagklassisch.m) rufst du die Funktion berechnung_temperaturmean ohne Parameter, du muss deine Funktion aber mit den definierten Eingabe-Parametern aufrufen.
Ich vermute das ich der Grund für den Fehler.
Die erste for-Schleife liefert korrekte Ergebnisse, weiß aber nicht ob mit einem Zeitintervall dt=1/24 wirklich die Stundenmittel aus den jeweiligen 10-Minutenintervalle berechnet wird.
Die zweite for-Schleife würde den Stundenmittel aus den 6, 10-Minuten-Werte, aber wie kann ich dort die zeitliche Periode festlegen?
Viele Grüße und besten Dank
glazio1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.11.2014, 18:22
Titel:
Vielen Dank für die Hilfestellung, alle Fehler konnten behoben werden.
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.