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

10-minuten in 15-minuten Werte (Wind, etc) umrechnen

 

apunktl
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2011, 12:19     Titel: 10-minuten in 15-minuten Werte (Wind, etc) umrechnen
  Antworten mit Zitat      
ich habe Zeitreihen von Windgeschwindigkeit, Temperatur, etc mit einer Auflösung von 10 Minuten.
Diese sollten in 15 Minuten-Werte umgerechnet werden.
Ansatz: http://www.dena.de/fileadmin/user_u.....ht_dena-Netzstudie_II.PDF
Seite 109

folgenden Code hab ich mir überlegt:
Code:

m = ((3*n + mod(n, 2)) / 2) - 1
g=(3-mod(m,3)) % angepasst, da dena-code 4 und 2 abwechselnd bringt
t15 = (t(m)*g(m) + t(m+1)*g(m+1))/3
 


n ist dabei [1:length(zeitreihe,1)] (Korrektur)

leider spuckt mir matlab 2011 einen "Index exceeds matrix dimensons"

hat jemand eine idee, wo das herkommen könnte?
Wär über hilfe sehr dankbar!

Viele Grüße

Zuletzt bearbeitet von apunktl am 01.09.2011, 14:14, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 01.09.2011, 12:29     Titel:
  Antworten mit Zitat      
Da dieser Verfahren auf einer linearen Interpolation beruht, kann man auch den Befehl

Code:
y_interp = interp1(t_10,y,t_15)


nutzen. t_10 ist der Zeitvektor in 10 min Abständen und t_15 dann eben mit 15 min Schritten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2011, 12:29     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung kommt, wenn der Index größer ist, als ein Array lang ist. Z.B.
Code:
x = 1:9
x(10)


Woran das in deinem Fall liegt, kann ich auch nicht sagen, da ich nicht weiß, welche Werte n annimmt und wie groß t und g sind.

Grundsätzlich sieht das für mich allerdings nach einer Interpolationsaufgabe aus, siehe
Code:


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2011, 13:39     Titel:
  Antworten mit Zitat      
danke für die antworten!

ich weiß nicht, ob ich hier mit interp1 weiterkomme, da es sich um mittelwerte handelt und der mittelwert zu den 15-minutenwerten gewichtet werden sollte.

interp1 würde doch in der einfachsten version mit linearer interpolation z.b. den :10 und den :20 wert addieren und durch zwei teilen? (korrigiert mich bitte, wenn das falsch gedacht ist)

so sieht es gewichtet aus(wie in der dena-netzstudie) :
x15,1 (z.b. 15:00) = gewichtetes mittel aus 15:00(2-fach) und 15:10-Wert(1-fach)
und x15,2 (15:15) = gewichtetes mittel aus 15:10(1-fach) und 15:20-Wert (2-fach)
...

wenn es eine funktion in matlab für das problem gibt wär das natürlich besser!


zu dem exceed-problem:
ich hab als input
a) n = [1:5300];
b) n = [1:5100]

die durch m(n) ausgeführt wird:
Code:
function [ m ] = m( n )
    m = ((3*n + mod(n, 2)) / 2) - 1
end


komischerweise kommt bei a) der exceed-fehler und bei b) nicht...
die modulo-funktion hat dcoh eigentlich keine grenze?!

vielleicht überseh ich auch nur was.. habt ihr eine idee?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2011, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

das Problem liegt auch nicht in der Funktion m (wobei es keine gute Idee ist, m als Funktion und als Variable zu verwenden) und damit nicht an modulo, sondern anscheinend in der Indizierung.

Die Frage nach der Größe von t und g ist übrigens noch offen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2011, 14:27     Titel:
  Antworten mit Zitat      
Hi,

Harald du hattest recht mit dem gleichen funktions-und variablen-namen. das war wohl die Ursache des exceed-fehlers in dem beispiel mit n=1:5100/5300.

t ist hier 5170x1 groß und da n bzw. m/g in abhängigkeit von t gebildet werden war einfach g zu klein und somit kein zugriff möglich.

ich hab jetzt einfach getrickst und mit vertcat 2 g's aneinandergehängt und es funktioniert - auch wenn nicht gerade schön das ganze.

danke nochmal für die hilfe! wenn noch jemand eine komfortablere lösung in petto hat bitte her damit!

achja: stimmt die Formel zur Berechnung der Gewichte (dena) folgendermaßen:
g = abs((2*mod(m,3))-1)+1 ?
da kommt immer abwechseln 4 und 2 raus, was ja nicht mit dem tabelleneintrag übereinstimmt.

viele grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2011, 17:21     Titel:
  Antworten mit Zitat      
Hallo,

vermutlich ist das so gemeint:
Code:
g = abs((mod(2*m,3))-1)+1


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2011, 12:14     Titel:
  Antworten mit Zitat      
traumhaft, danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.02.2013, 15:46     Titel: Re: 10-minuten in 15-minuten Werte (Wind, etc) umrechnen
  Antworten mit Zitat      
Hallo apunktl,

Der Vollständigkeit halber, obwohl dieser Thread bereits im Ruhestand ist:
Der im PDF angegebene Algorithmus ist sehr umständlich und erzeugt unnötig viel Verwirrung. Einfacher:
Code:
W_10 = (1:52560)';  % Dummy-Daten
n_10 = length(W_10);
n_15 = n_10 * 2 / 3;
W_15(1:2:n_15) = (W_10(1:3:n_10) * 2 + W_10(2:3:n_10)) / 3;
W_15(2:2:n_15) = (W_10(2:3:n_10) + W_10(3:3:n_10) * 2) / 3;

Dabei sind "W_10" die Winddaten in 10-Minuten-Intrervallen, und W_15 entspechend die 15-Minuten-Intervall-Werte.
Diese Art der Mittelwert-Bildung erhält den Stunden-Mittelwert.

Gruß, Jan
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.