matlab - How do I "stretch" (interpolate) an array but keep its underlying data intact? -


i have 2 splines i've generated (a bit of modification of) getcurve() represent xy , xz of trajectory. combine 2 splines generate 3d plot, via plot3(). modified getcurve() output xdata , ydata of line drawn on plot.

since splines graphically generated, number of elements won't same between xy , xz. suppose length(xy)>length(xz). i'm trying create new vector xz_2 has same length xy , has same x-values xy.

my first idea interpolate follows:

xz_2(:,2) = interp1(xz(:,1), xz(:,2), xy(:,1)) 

but error:

error using griddedinterpolant grid vectors not strictly monotonic increasing. error in interp1 (line 191)     f = griddedinterpolant(x,v,method);  

the spline xz looks this:

xz spline

i don't understand why can't interpolate given spline. doesn't special. can rebuild spline doing following (you'll need curve fitting toolbox):

>> xz = [0.0288    0.0518    0.1071    0.1763    0.2707    0.3583    0.4988    0.5864    0.7339    0.8191    0.9182    0.9781          1.8070    1.3626    0.9766    0.4152   -0.0643   -0.3684   -0.9181   -1.1637   -1.4795   -1.6667   -1.8070   -1.9474]; >> fnplt(cscvn(xz)); 

is there way "resize" xz use same x-values xy? realize information xz lost when this, that's okay.

it says in interp1(x, y, xi);, x , xi must monotonic increasing, i.e. sorted.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -