MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Step functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg17083] Re: [mg17097] Step functions
  • From: "Tomas Garza" <tgarza at mail.internet.com.mx>
  • Date: Fri, 23 Apr 1999 02:32:16 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

Alessio Massaro [alessio.massaro at cern.ch] wrote:

> Can anyone help me to build a step function out of a series of
> {x,y} pairs?
>
> For ex.., consider an ordered random {x,y} series like
>
> data=Sort[Table[{Random[],Random[]}, {10}], First[#1]<First[#2]&]
>
> I would like to build a function f[ { {x1, y1}, {x2, y2}, ...}, x ], that
> evaluates to:
> - y[i]        if x=x[i]
> - y[i+1]    if x[i]<x<x[i+1]
> Here each point {xi, yi} determines f over the left-open interval
> x[i]<x<=x[i+1] of x.
> The right-open interval version would be:
> - y[i]        if x=x[i]
> - y[i]        if x[i]<x<x[i+1]

Hi, Alessio!

Of course, you could try to build the lines using graphics primitives, but
this is tedious. There goes an idea (due, I think, to J. Tischer). If the
domain where you want to display your step function is, e.g., {0, a}, try
this:

In[1]:=
redata=Transpose[{Append[Transpose[data][[1]],a],
      Prepend[Transpose[data][[2]],0]}];

In[2]:=
foo=Interpolation[redata,InterpolationOrder->0];

In[3]:=
Plot[foo[x],{x,0,a}]

This will do the trick.

Good luck,

Tomas Garza
Mexico City



  • Prev by Date: Testing Packages (Enhancement to CleanSlate)
  • Next by Date: Re: Solving matrix equation
  • Previous by thread: RE: Step functions
  • Next by thread: Re: Step functions