Jaki najlepszy algorytm do interpolacji punktów na wykresie

0

Witam,

Chodzi mi o to, zeby połączyć punkty na wykresie krzywą "zaokrągloną" zamiast po prostu liniami prostymi. Jakie są algorytmy generowania takiej krzywej?

Zwykła interpolacja nie zda egzaminu w ogólnym przypadku (rzeczy typu metoda najmniejszych kwadratów odpadają raczej, spline tez). A jednak Excel/;OpenOffice jakoś te krzywe wyliczają i wygenerowana linia przechodzi dokladnie przez wszystkie punkty wykresu - tyle ze jest zaokrąglona tak jakby była rysowana ręką na kartce.

Jakie są algoytmy rysowania takich krzywych? Orientuje się ktoś? Może jakieś sieci neuronowe? Ale wolałbym prostszą metodę. Rozumiem, ze raczej jednym wzorem matematycznym się takiej krzywej w ogólnym przypadku zapisać nie da. Więc jak się generuje takie wykresy?

0

No to wygląda całkiem ciekawie. Zajrzałem sobie jeszcze do OpenOffice i tam są dostępne w algorytmy "wygładzania", a mianowicie:

  • kubiczna krzywa składana
  • krzywa składana B

Oczywiście jak zwykle tłumaczenie na polski jest co najmniej hmm dziwne. Pytanie, cóż to jest "kubiczna krzywa składana" (chyba cubic spline) ?

Co do Cardinal Spline, to jest to jak widzę wbudowane w .NET: http://msdn.microsoft.com/en-us/library/554h284b%28VS.71%29.aspx ale cóż z tego, skoro potrzebuję biblioteki do C++ na linuksa ...

0

W tym linku masz też odnośnik do źródeł tego apletu. Nie są jakoś wybitnie skomplikowane, wystarczy przeanalizować i przepisać na C++ ;)

0

Hmm znalazłem na razie 2 ciekawsze rzeczy:

To pierwsze nie kompiluje się pod Visual C++ 2008 (niestety kompilator nie radzi sobie z szablonami, dziwne bo był to kod pod Visuala 6 który miał działać), zobaczymy jak będzie na gcc pod linuksem, drugiego jeszcze nie wypróbowałem, ale Akima spline wygląda całkiem zachęcająco...

0
othello napisał(a)

nie kompiluje się pod Visual C++ 2008 (niestety kompilator nie radzi sobie z szablonami, dziwne bo był to kod pod Visuala 6 który miał działać)
W takim razie to nie kompilator nie radzi sobie z szablonami, tylko kod jest źle napisany.

0

Być może, najnowszy gcc na linuksie wypisał błędy o dokładnie tej samej treści. Jednak doszedłem do wniosku że w moim przypadku spline nie wystarcza.

Chodzi o to, że przebiegi mają znaczne oscylacje. Jest to odczyt temperatury z termometru elektronicznego. Dokładność 0.5 stopnia. A tempetratura np. między 5 a 5.5 stopnia to ciągłe odczyty na zamianę (co 10 sekund) pomiędzy 5 a 5.5. Z kolei, zmiany nawet rzędu 0.5 stopnia (nagłe, nie płynne) w skali od 0 do 6 stopni powodują, że wykres przypomina raczej przebieg prostokątny, albo powyginane linie, a nawet wręcz zapętlające się (tak akurat open office rysuje).

Jak to uśrednić? Myślałem że będę pobierać dane rzadziej, np co 5 albo co 10 minut, ale wtedy lokalne minima i maksima mogą przejśc niezauważone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1