I use scipy.interpolate.UnivariateSpline to smoothly interpolate a large amount of data. It works great. I get an object that acts as a function.
Now I want to save the spline points later and use them in Matlab (as well as Python, but this is less urgent), without requiring source data. How can i do this?
In scipy, I have no idea; UnivariateSpline does not seem to offer a constructor with previously computed nodes and coefficients.
In MATLAB, I tried the Matlab spline() and pchip() functions, and although they both come close, they have errors near the endpoints that look solid like Gibbs ears .
Here is an example of a dataset that I have in Matlab format:
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])
Odds and nodes are the result of calling get_coeffs() and get_knots() on a scipy UnivariateSpline. The 'y' values โโare the UnivariateSpline values โโon the nodes, more specifically:
y = f(f.get_knots())
where f is my UnivariateSpline.
How can I use this data to create a spline that matches the behavior of UnivariateSpline without using the Curve-Fitting Toolbox? I do not need to do any data in Matlab, I just need to know how to build a cubic spline from the values โโof nodes / coefficients / splines.
source share