Springen naar inhoud

Interpoleren voor ongekende tijdsintervallen.


  • Log in om te kunnen reageren

#1

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 22 november 2010 - 14:36

Stel ik heb een vector A met hierin de metingen en een vector T met hierin de tijdsmomenten waarop de samples in A genomen zijn.
Bestaat er een matlab een standaard manier om met A en T een vector B en N te maken waarbij in B de samples zitten op een vast tijds interval? Met interpoleren? Bestaan hier functies voor?
Groeten.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

thermo1945

    thermo1945


  • >1k berichten
  • 3112 berichten
  • Verbannen

Geplaatst op 22 november 2010 - 23:45

Interpoleren doe je tussen twee 'nabije' meetpunten.
Een lineaire benadering is meestal toereikend.

#3

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 23 november 2010 - 00:11

Stel ik heb een vector A met hierin de metingen en een vector T met hierin de tijdsmomenten waarop de samples in A genomen zijn.
Bestaat er een matlab een standaard manier om met A en T een vector B en N te maken waarbij in B de samples zitten op een vast tijds interval? Met interpoleren? Bestaan hier functies voor?
Groeten.

Dat hangt af van de aard van de vector A en de toepassing. Polyfit is het eenvoudigst, maar er zijn uiteraard geavanceerdere methoden gaande van kernel methoden over Principal component analysis tot support vector machines. Matlab kan het allemaal ;)

Een algemene benaming is overigens regressie-analyse. Eens googlen op regression analysis matlab zal volgens mij al voldoende stof opleveren.

Op die tweede vraag weet ik ook geen antwoord: waarschijnlijk dat zoiets wel mogelijk is via Markov Chains...

Maar misschien eerst polyfit?

Interpoleren doe je tussen twee 'nabije' meetpunten.

Enkel met eenvoudige methoden: de meest gebruikte methoden maken (terecht) gebruik van de volledige dataset.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#4

robertus58a

    robertus58a


  • >100 berichten
  • 171 berichten
  • Ervaren gebruiker

Geplaatst op 23 november 2010 - 09:17

M.i. moet hier geen regressie op worden toegepast maar interpolatie.

Stel vector A bevat temperatuurmetingen. De temperatuur variaties zijn veroorzaakt door bijv een verwarmingselement aan en uit te schakelen. De temperatuursvariaties hangen dan af van de tijd EN de variaties in warmtetoevoer. Een functie fitten op de temperatuur met alleen de tijd als input is geen goed idee (maar wel mogelijk).

Aangezien alleen de temperatuur en tijd gegeven zijn waarbij de tijdsvector niet equidistant is, is interpolatie een goede (de aangewezen?) techniek om equidistante data te verkrijgen.

Matlab functie: yi = interp1(x,y,xi,method). Met x,y de originale data, xi de data waarvoor de interpolatie gewenst is. Met "method" kan je o.a. voor lineair of cubic spline interpolatie kiezen

#5

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 23 november 2010 - 11:33

Matlab functie: yi = interp1(x,y,xi,method). Met x,y de originale data, xi de data waarvoor de interpolatie gewenst is. Met "method" kan je o.a. voor lineair of cubic spline interpolatie kiezen


Werkt perfect bedankt.

#6

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 23 november 2010 - 20:38

M.i. moet hier geen regressie op worden toegepast maar interpolatie.

Stel vector A bevat temperatuurmetingen. De temperatuur variaties zijn veroorzaakt door bijv een verwarmingselement aan en uit te schakelen. De temperatuursvariaties hangen dan af van de tijd EN de variaties in warmtetoevoer. Een functie fitten op de temperatuur met alleen de tijd als input is geen goed idee (maar wel mogelijk).

Regressie is dan ook een heel stuk ruimer dan alleen lineaire regressie. Je kunt regressie uitvoeren op alle dimensies tot zelfs oneindig-dimensionale data, dus je kunt perfect een functie fitten op de temperatuur en variaties. Die functie heeft dan wel dikwijls geen mooie gesloten vorm, maar het blijft een evalueerbare functie nonetheless.

Bij interpolatie ga je trouwens altijd uit van een bepaalde functie bij je data, en ga je dus impliciet regressie op je data gaan toepassen.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#7

robertus58a

    robertus58a


  • >100 berichten
  • 171 berichten
  • Ervaren gebruiker

Geplaatst op 24 november 2010 - 21:37

Regressie is dan ook een heel stuk ruimer dan alleen lineaire regressie. Je kunt regressie uitvoeren op alle dimensies tot zelfs oneindig-dimensionale data, dus je kunt perfect een functie fitten op de temperatuur en variaties. Die functie heeft dan wel dikwijls geen mooie gesloten vorm, maar het blijft een evalueerbare functie nonetheless.

Bij interpolatie ga je trouwens altijd uit van een bepaalde functie bij je data, en ga je dus impliciet regressie op je data gaan toepassen.


317070 gaf ook al in zijn eerste reactie regressie via de functie "polyfit" als oplossing. Kan dit met een concreet voorbeeld worden toegelicht. Wordt "polyfit" dan voor de gehele dataset gebruikt of een aantal maal voor een deel van de data. Het is mij nog niet duidelijk. bvd

#8

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 25 november 2010 - 18:16

317070 gaf ook al in zijn eerste reactie regressie via de functie "polyfit" als oplossing. Kan dit met een concreet voorbeeld worden toegelicht. Wordt "polyfit" dan voor de gehele dataset gebruikt of een aantal maal voor een deel van de data. Het is mij nog niet duidelijk. bvd

p = polyfit(x,y,6);
f = polyval(p,t);

Hier benader je dus je metingen y op de punten x door een 6e orde polynoom. Vervolgens zijn de waarden f de evaluaties van die polynoom op de plaatsen t.

Dus concreet voor de vraagsteller zijn naamgebruik:
p = polyfit(A,T,6);
B = polyval(p,N);

Oppassen met je orde, de algemene regel is dat als je een k-de-orde gebruikt, dat je dan minstens 10k datapunten moet hebben, anders zul je overfitting krijgen.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#9

robertus58a

    robertus58a


  • >100 berichten
  • 171 berichten
  • Ervaren gebruiker

Geplaatst op 26 november 2010 - 23:46

In de oorsponkelijke probleemstelling werd een dataset gegeven met metingen en tijdsmomenten. Ik ga er dan van uit dat deze metingen tijdsafhankelijk zijn.

Als je dan als representatief voorbeeld een eerste orde DV neemt (1e orde systeem met met slechts twee parameters: gain+tijdsconstante), waarbij de input verhoogd en verlaagd wordt dan kan je met een eenvoudig illustreren dat een globale fit (zoals p = polyfit(x,y,6) en f = polyval(p,t)) een slechte interpolatie geeft. Locale fit methoden (lineair, of spline) (met bijv. interp1) geeft veel betere resultaten.

Dus wellicht kan je daarmee in het algemeen concluderen dat voor tijdsafhankelijke systemen (data) een globale polynoom fit niet de aangewezen interpolatiemethode is.

#10

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 27 november 2010 - 01:19

Dus wellicht kan je daarmee in het algemeen concluderen dat voor tijdsafhankelijke systemen (data) een globale polynoom fit niet de aangewezen interpolatiemethode is.

Laat ik het nu eens omkeren, en laat je je splines nu eens los op ruizige data ](*,)
Je zult zien dat splines bijlange na niet de aangewezen interpolatiemethode is, terwijl polyfit betere resultaten geeft.

Zoals eerder gezegd, de soort data is zeer belangrijk om je interpolatiemethode te kiezen. Geavanceerdere methoden hebben steeds minder nadelen, maar mijn ervaring met machine learning (waar dit onder valt) leert me dat je voor iedere methode een categorie datasets kunt geven waarop ze niet goed werkt. Hoe geavanceerder de methode, hoe minder datasets je zult vinden, maar een algemene goede methode bestaat er (nog) niet.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures