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

for loop programmieren mit Zeitmittelung

 

franzissel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2015, 09:57     Titel: for loop programmieren mit Zeitmittelung
  Antworten mit Zitat      
Hallo,
ich bin auf der suche nach einem for-loop.
Und zwar habe ich Wetterdaten, die jede Sekunde gemessen sind. Um es nun schoener darzustellen will ich die Windgeschwindikeiten ueber 1 Stunde mitteln. Gibt es da eine Moeglichkeit dass mit einem for-loop zu machen?

Code:
% so soll es am Ende sein ist aber doch sehr Zeitaufwaendig
% averaging the windspeed over 1h
mean(WS_1(1:3600));
mean(WS_1(3601:7201);
mean(WS_1(7202:10802);
mean(WS_1(10803:14403);
 


Code:
% das waere mein Vorschlag aber ich bekomme nur den ersten Wert
for k=1:3601:CS(1).WS_1(end);
    CS(1).m_WS_1=mean(CS(1).WS_1(k));
end
 


Viele Dank fuer jegliche Hilfe


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.04.2015, 10:12     Titel:
  Antworten mit Zitat      
deine stunden haben leider unterschiedlich viele elemente. ist das gewollt ?
4*3600 sind 14400 und nicht 14403. da kann man leider nicht einfach ein reshape durchführen und sich die schleife spaaren.
Code:
for k=1:3601:CS(1).WS_1(end);
    CS(1).m_WS_1=mean(CS(1).WS_1(k));
end
 


in deiner schleife berechnest du nur den mittelwert aus einem einzelnen wert.. wenn überhaubt... ist in CS(1).WS_1(end); zufällig der index des letzen wertes? falls nicht macht das keinen sinn...
außerdem speicherst du keine werte.
es müsste also eher so sein
Code:

n=1;
for k=1:3601:numel(CS(1).WS_1(end))-3601;
    CS(1).m_WS_1(n)=mean(CS(1).WS_1(k:k+3601));
n=n+1;
end  

so ca... kann das grade nicht testen. muss man vieleicht nochmal mit dem debugger rein wenn was nicht klappt
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
franzissel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2015, 11:26     Titel:
  Antworten mit Zitat      
Also,
Ein Zeitschritt sollte ja immer 1h lang sein. Das heisst doch ich habe als Schrittintervall 3600s. Deshalb dachte ich muesst ja dann die 2. Stunde bei der 3601 Sekunde anfangen.
CS(1).WS_1(end); ist der index des letzen wertes

Als alternative haette ich noch folgenden Code, allerdings bekomme ich da immer NaN

Code:
% alternative
ts=0:60*60:max(CS(1).time);
k=length(ts);
for j=1:k-1
     i= find(ts(j)<=CS(1).time & CS(1).time<ts(j+1));
     CS(1).m_WS(j)=mean(CS(1).WS_1(f));
end
 
franzissel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2015, 14:05     Titel:
  Antworten mit Zitat      
Ich habe eine funktionierende Lösung gefunden.

falls jemand Interesse hat, hier mein Code:

Code:
%Code for making different intervals with means
time2=(time_WS(1):60/1440:time_WS(end)); % new time vektor (mean every 60 min) 1440 are the minutes for one day
average_WS60=zeros(length(time2),1); %create new vector
for k=(1:(length(time2)-1));
    F = find(time2(k) <= time_WS & time_WS <time2(k+1)); % find the time I want to use the values from --> e.g. first second of measurement until 3600 sec
    average_WS60(k,1) = mean(WS(F)); % write the mean values in the new created vector, where WS the original vector is I use the mean values from
end


figure(1)
plot((time2+30/1440),average_WS60) % changes the time values in the middle of an array so the mean is not at the beginning of the time array it's at the middle instead
title('windspeed')

 
 
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.