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

Zeitreihen interpolieren

 

Lucas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2016, 21:21     Titel: Zeitreihen interpolieren
  Antworten mit Zitat      
Hallo,

ich habe zwei voneinander unabhängige Zeitreihen (TS1 und TS2, jeweils vorliegend als eindimensionaler Datenvektor mit dazugehörigem datetime-Vektor), welche den selben Zeitraum abdecken, wobei TS2 vorne und hinten darüber hinausgeht (diese überschüssigen Daten sind unwichtig) und die Zeitintervalle ungleich sind (TS1: etwa 30 s, TS2: 1 h).

TS1:
Element datetime Wert
1 '12-Nov-2010 00:00:29' 0,527889619162767
2 '12-Nov-2010 00:00:59' 0,529886048627037
3 '12-Nov-2010 00:01:29' 0,522882478095841
4 '12-Nov-2010 00:01:59' 0,523878907558089
5 '12-Nov-2010 00:02:29' 0,512875337023349
...
5665560 '01-Apr-2016 05:07:41' 0,264618965779846
5665561 '01-Apr-2016 05:08:11' 0,262618709425624
5665562 '01-Apr-2016 05:08:41' 0,257618453069881
5665563 '01-Apr-2016 05:09:11' 0,244618196716146
5665564 '01-Apr-2016 05:09:41' 0,232617940359887

TS2:
Element datetime Wert
1 '01-Nov-2010 00:00:00' -0,356385967166036
2 '01-Nov-2010 01:00:00' -0,175427769398766
3 '01-Nov-2010 01:59:59' 0,0350333172584120
4 '01-Nov-2010 02:59:59' 0,230564356684479
5 '01-Nov-2010 03:59:59' 0,368901749042020
...
49996 '15-Jul-2016 02:59:59' -0,178737023073785
49997 '15-Jul-2016 03:59:59' -0,0235593698684266
49998 '15-Jul-2016 04:59:59' 0,108886338392307
49999 '15-Jul-2016 05:59:59' 0,193170801382286
50000 '15-Jul-2016 06:59:59' 0,218190681822731

Jedem Zeitpunkt von TS1 möchte ich nun einen entsprechenden Wert der Zeitreihe TS2 zuordnen, sodass ich im Endeffekt den datetime-Vektor von TS1 habe mit den zugehörigen Werten von TS1 sowie interpolierten (spline) Werten von TS2.

Leider fehlen mir Ansätze für die Umsetzung, da die Timestamps auch nicht gerade günstig liegen. Deshalb würde ich mich sehr über Hilfestellungen freuen.

Gruß

Lucas


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 15.11.2016, 02:54     Titel:
  Antworten mit Zitat      
hallo, du solltest erstmal die zeitangabe (bei dir strings) in reele zahlen konvertieren https://de.mathworks.com/help/matlab/ref/datenum.html . anschließend kannst du deine interpolation mit dem befehl interp1 vornehmen.
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: 15.11.2016, 10:35     Titel: Re: Zeitreihen interpolieren
  Antworten mit Zitat      
Hallo Lucas,

Zunächst muss Du die Kommas in den Werten gegen Punkte austauschen, denn sonst sind sie für Matlab nicht erkennbar. Das ist ein uraltes Drama und ich würde mir die Haare raufen darüber, dass die Deutschen (und einige andere Länder) mit ihren Din-Normen hier eine einheitliche Schreibweise verhindert haben. Aber so ist es nun mal.

Bist Du Dir bei der Spline-Interpolation sicher, z.B. in Form physikalischer Argumente? Ein Spline kann nämlich über die (lokalen) Maxima und Minima hinaus-Schwingen. Wenn die Daten nicht "ziemlich glatt" sind, handelt man sich damit eventuell starkes Rauschen ein.

Wegen der Kommas gehe ich davon aus, dass die Daten in Text-Files vorliegen. Dann lies sie zunächst ein. Das geht mit textscan , ich selbst mache es lieber direkt mit fscanf . Das Umwandeln der Datum-Strings geht direkt mit datenum und interp1 hat Harald ja auch bereits vorgeschlagen.
Probiere es mal und poste wieder, wenn Du auf Schwierigkeiten stößt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lucas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2016, 14:08     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Antworten, dass es doch so einfach wäre, hätte ich nicht gedacht.

Die Kommas waren jetzt nicht das Problem. Sind eigentlich auch Punkte. Die müssen sich durch irgendeinen Copy+Paste Automatismus eingeschlichen haben, sorry.

Ich mache eine Gezeitenkorrektur. Bei der zu interpolierenden Zeitreihe handelt es sich dabei um eine simulierte Datenreihe, die ich von den gemessenen Daten subtrahiere. Um einen "eckigen" Tidenverlauf zu verhindern, bzw. einen realistischen Tidenverlauf zu konstruieren, ist die Spline-Interpolation, denke ich, ganz gut geeignet.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.11.2016, 14:19     Titel:
  Antworten mit Zitat      
Hallo Lucas,

Wie gesagt: Sei vorsichtig bei den Splines.
Code:
a = [0, 1, 0, 1, 0, 0];
b = 0:5;
c = 0:0.1:5;
y = spline(b,a,c);
plot(c,y);
hold('on');
plot(b,a, 'o')

Das hat mit den Messwerten nur bedingt etwas zu tun.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lucas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2016, 16:19     Titel:
  Antworten mit Zitat      
Vielen Dank für deinen Hinweis, Jan.

Das simulierte Gezeitensignal setzt sich aus verschiedenen Partialtiden zusammen. Da jedoch die kürzeste Periode dieser Konstituenten immer noch bei mindestens 4 Stunden liegt, sollte das Problem hier, bei einer Abtastrate von einer Stunde, (nach Nyquist Idea ) nicht auftreten, oder bin ich hier völlig auf dem falschen Dampfer?
 
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.