help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fixed points piecewise-linear fitting


From: Juan Pablo Carbajal
Subject: Re: fixed points piecewise-linear fitting
Date: Sat, 17 Mar 2012 13:17:59 +0100

On Sat, Mar 17, 2012 at 12:43 PM, Sergei Steshenko <address@hidden> wrote:
> Hello,
>
> strictly speaking, it's not an Octave-specific question, but an algorithmic 
> one.
>
> Suppose there is a measured function Y(X). In Octave terms X is a vector with 
> N elements.
>
> Suppose there are fixed points Xf such that
>
> X(1) <= Xf(1)
> Xf(end) <= X(end).
>
> The Xf points are more sparse than X.
>
>
> The Xf points are fixed, i.e. one can't change them as he/she pleases.
>
> The goal is to find piecewise-linear function Yf(Xf) which best fits Y(X).
>
> I.e. for each two Xf(k), Xf(k+1) pair of points to find a piece of straight 
> line defined by Yf(k), Yf(k+1)pair of points such that the whole Yf fits Y 
> pretty well.
>
> Best fitting I'm interested in is according to minimum of sum(abs(Y - 
> Yf_interpolated)). The Yf_interpolated is linear interpolated Yf on X, so 
> dimensions of Y and Yf_interpolated match.
>
>
> I did some quick web searching and my impression is that there is no 
> universally adopted algorithm for this task, but there is a number solutions, 
> including some for R-language.
>
> I myself wrote a straightforward brute force implementation which works 
> pretty well and acceptably fast for me.
>
> Anyway, I'm writing this Email in the hope to be educated by the community - 
> maybe there are already more elegant wheels than the one I've invented.
>
> Thanks,
>   Sergei.
>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://mailman.cae.wisc.edu/listinfo/help-octave

Hi,

What you describe is also known as Langrange (or linear)
interpolation. You can use interp1 with the option linear
an example

t=linspace(0,2*pi,100);
ts=linspace(0,2*pi,10);
ys=sin(ts);
y=interp1(ts,ys,t,'linear');
plot(t,y,'.',ts,ys,'o',t,sin(t),'-')

I hope this is what you were asking (to restrict the inteprolation to
a subinterval, you could use lookup function before the
interpolation).



-- 
M. Sc. Juan Pablo Carbajal
-----
PhD Student
University of Zürich
http://ailab.ifi.uzh.ch/carbajal/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]