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

Interpolation in Zeitabschnitten

 

HeikoNeuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2013, 15:04     Titel: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Hallo Leutz,
ich habe folgendes Problem.
Ich habe eine Messreihe aus der ich die Zeit und die Beschleunigungen zu der Jeweiligen habe. Das Problem ist allerdings das diese Werte nicht äquidistant abgetastet wurden. Für eine Auswertung benötige ich allerdings näherungsweise alle Werte zu jeder beliebigen Zeit.
Demzufolge müssen die Fehlenden interpoliert werden. Die Interpolation soll nur in gewissen Zeitabschnitten stattfinden, da die Beschleunigungsverläufe über die Zeit unterschiedlich stark ausschlagen.
Nun ist die Frage wie lege ich die Zeitbereiche fest und welchen Befehl verwende ich für die Interpolation.
Die Darstellung der Werte ist angehängt.

Forenbild.png
 Beschreibung:

Download
 Dateiname:  Forenbild.png
 Dateigröße:  8.05 KB
 Heruntergeladen:  982 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.08.2013, 16:54     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Hallo HeikoNeuling,

Zitat:
Die Interpolation soll nur in gewissen Zeitabschnitten stattfinden, da die Beschleunigungsverläufe über die Zeit unterschiedlich stark ausschlagen.

Was bedeutet das konkret? Um zu wissen, wie Du die Zeitbereiche festlegen musst, müssten man zunächst klären, nach welöchen Kriterien Du dies machen möchtest.

INTERP1 ist für die Interpolation geeignet.

Tipp:
Code:
docsearch interpolate

Du könntest auch Deine favorisierte Internet-Suchmaschine nach "Matlab interpolate" fragen. goMatlab ist zwar ein tolles Forum, aber Google war mit 0.17 seconds ungeschlagen schneller.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2013, 08:48     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Nur zum Verständnis. Bei interp1 würde ich jede Wert und den darauf folgenden mit einer Gerade verbinden. Ich hab das mal versucht und bekomme leider einen Error.

Code:
% Versuch
x = t;
y = a;
xi = 0:length(t);
yi = interp1(x,y,xi);
 


Nun erscheint folgender Fehler.
_____________________________________________________
Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.

Error in interp1 (line 191)
F = griddedInterpolant(X,V,method);
_____________________________________________________

Das bedeutet nun was genau?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.08.2013, 08:58     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Hallo HeikoNeuling,

Die Meldung bedeutet, dass die Werte der Variablen t nicht monoton setigen. Versuche mal:
Code:
issorted(t)
% oder
any(diff(t) <= 0);

Für eine Interpolation muss X monoton steigen, weil sich sonst nicht eindeutig bestimmen lässt, welche Punkte "benachbart" sind.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2013, 09:09     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo HeikoNeuling,

Die Meldung bedeutet, dass die Werte der Variablen t nicht monoton setigen. Versuche mal:
Code:
issorted(t)
% oder
any(diff(t) <= 0);

Für eine Interpolation muss X monoton steigen, weil sich sonst nicht eindeutig bestimmen lässt, welche Punkte "benachbart" sind.

Gruß, Jan


Danke für die schnelle Antwort.
also issorted(t) -> ans =1
und any(diff(t) <= 0) -> ans =1

Würde ja bedeuten das t immer steigt, es aber irgendein t(i) gibt das Null ist. Und ich nehme mal an das darf nicht sein.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.08.2013, 09:13     Titel:
  Antworten mit Zitat      
kommt bei dir ein t doppelt vor? doppelte musst du dann rauswerfen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
HeikoNeuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2013, 09:41     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
kommt bei dir ein t doppelt vor? doppelte musst du dann rauswerfen.


Das Problem ist, dass t nicht äquidistant ist. Somit kommt es anscheinend vor das diff(t) ab und zu Null wird.

Nun hatte ich die Idee eine Matrix zu erstellen
U=[t,a,[0;diff(t]];
wie suche ich jetzt in dieser alle U(:,3) die gleich Null sind
und wenn diese Null sind dann lösche die komplette Zeile.
So das am Ende der Schleife ein U raus kommt ohne leere Zeilen und mit any(diff(t) <= 0); -> ans=0
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.08.2013, 09:45     Titel:
  Antworten mit Zitat      
diff(t) wird 0 wenn 2 werte doppelt sind. wie ich bereits fragte. hat nix mit äquidistant zu tun.
Code:

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
HeikoNeuling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2013, 09:52     Titel: Re: Interpolation in Zeitabschnitten
  Antworten mit Zitat      
Ok unique löscht also alle doppelten und sortiert t.
Nun hab ich aber den Fall das length(t)~=length(a) ist, da ja einige gelöscht wurden.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.08.2013, 10:25     Titel:
  Antworten mit Zitat      
die documentation von matlab ist sehr gut und es loht immer sich den befehl in der doc anzugucken. zu den rückgabe argumetnen von unique gehört auch der index.
_________________

richtig Fragen
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.