[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Extrapolation of 2 end points in interp1 instead of single scalar va
From: |
Sebastian Schöps |
Subject: |
Re: Extrapolation of 2 end points in interp1 instead of single scalar value |
Date: |
Sun, 25 Mar 2018 08:34:55 -0700 (MST) |
Han Yichou wrote
> I am trying to interpolate the points within a dataset but to extrapolate
> any x values outside of the dataset range by assuming the 2 end points
> continue with the same y value. I am using interp1 to carry out the
> interpolation. However, I see that Octave only allows extrapolation of a
> single scalar value. Can someone advise how I can extrapolate using 2
> separate values instead?
How do you want to interpolate? If you do constant interpolation, then the
following does immediately work
>x=[1 2 3];
>y=x.^2;
>interp1(x,y,'nearest','extrap',[0 1 3 4])
1 1 9 9
If you want to use linear interpolation but constant extrapolation, then you
can exploit the linearity of the interpolation by adding two virtual points
>x= [0 x 4];
>y=[y(1) y y(end)]
>interp1(x,y,'linear','extrap',[0 1 3 4])
1 1 9 9
If you want to use splines, than you may have to create a pp-structure with
"interp1(...,'pp')" and then you may add your own (constant) polynomial
pieces to it, see mkpp and unmkpp.
Sebastian
--
Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html