Używam scipy.interpolate.UnivariateSpline
do płynnej interpolacji dużej ilości danych. Działa świetnie. Dostaję obiekt, który działa jak funkcja.przy użyciu wyniku scipy.interpolate.UnivariateSpline później w Pythonie lub w Matlab bez potrzeby oryginalnych punktów danych
Teraz chcę zapisać punkty splajnu na później i używać ich w Matlab (a także w Pythonie, ale to mniej pilne), bez potrzeby posiadania oryginalnych danych. Jak mogę to zrobić?
W scipy nie mam pojęcia; UnivariateSpline wydaje się nie oferować konstruktora z wcześniej wyliczonymi węzłami i współczynnikami.
W programie MATLAB, próbowałem funkcji Matlab spline()
i pchip()
, a jednocześnie zarówno zbliżyć, mają błędy w pobliżu punktów końcowych, które wyglądają trochę jak Gibbs ears.
Oto przykładowy zestaw danych, które mam w formacie Matlab:
splinedata = struct('coeffs',[-0.0412739180955273 -0.0236463479425733 0.42393753107602 -1.27274336116436 0.255711720888164 1.93923263846732 -2.30438927604816 1.02078680231079 0.997156858475075 -2.35321792387215 0.667027554745454 0.777918416623834],...
'knots',[0 0.125 0.1875 0.25 0.375 0.5 0.625 0.75 0.875 0.9999],...
'y',[-0.0412739180955273 -0.191354308450615 -0.869601364377744 -0.141538578624065 0.895258135865578 -1.04292294390242 0.462652465278345 0.442550440125204 -1.03967756446455 0.777918416623834])
Współczynniki i węzły są wynikiem nazywając get_coeffs()
i get_knots()
na scipy UnivariateSpline. Wartości „Y” są wartości UnivariateSpline w węzłach, a dokładniej:
y = f(f.get_knots())
gdzie f jest my UnivariateSpline.
W jaki sposób mogę użyć tych danych do utworzenia splajnu, który pasuje do zachowania UnivariateSpline, bez konieczności używania Przybornika dopasowywania krzywych? Nie potrzebuję żadnych dopasowań danych w Matlab, po prostu muszę wiedzieć, jak skonstruować splajn sześcienny z wartości węzłów/współczynników/splajnów.
ja nie wiem, czy to pomoże, ale 'obiekt UnivariateSpline' przynajmniej wydaje się być pickleable, w razie gdybyś chciał ponownego wykorzystania twoje dopasowanie w Pythonie. –
Szczegółowa odpowiedź na pytanie OP znajduje się na stronie http://stackoverflow.com/questions/22488637/getting-spline-equation-from-univariatespline-object/25330648#25330648. Ta odpowiedź zapewnia sposób ręcznej oceny węzłów spline i współczynników, tak aby OP mógł spróbować dopasować je do danych wejściowych używanych przez inne programy. – nzh