View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Piecewise defined function builder

4.7 | 3 ratings Rate this file 7 Downloads (last 30 days) File Size: 2.59 KB File ID: #15851 Version: 1.0

Piecewise defined function builder


Toby Driscoll (view profile)


06 Aug 2007 (Updated )

Constructs a callable function that applies different definitions based on supplied conditions.

| Watch this File

File Information

F = PIECEWISE(COND1,DEFN1,...CONDn,DEFNn,DEFAULT) returns a callable
function F that applies different definitions according to supplied
conditions. For a given X, F(X) will test COND1 and apply DEFN1 if true,
etc. If all conditions fail, then DEFAULT is applied. For any particular
input, the first condition to match is the only one applied.

Each condition should be either a:
  * function handle evaluating to logical values, or
  * vector [a b] representing membership in the half-open interval [a,b).
Each definition should be either a:
  * function handle, or
  * scalar value.
The DEFAULT definition is optional; if omitted, it will be set to NaN.
All function definitions can accept multiple input variables, but they
all must accept the same number as in the call to F. They also should
all be vectorized, returning results the same size and shape as their
inputs. Complex inputs will work if the definitions are set up
accordingly; in that case, intervals will be tested using only Re parts.

The special syntax F() displays all the conditions and definitions for F.

   f = piecewise([-1 1],@(x) 1+cos(pi*x),0); % a "cosine bell"
   ezplot(f,[-2 2])
   g = piecewise(@(x) sin(x)<0.5,@sin,@(x) 1-sin(x));
   ezplot(g,[-2*pi 2*pi])
   h = piecewise(@(x,y) (x<0)|(y<0),@(x,y) sin(x-y)); % defined on L
   ezsurf(h,[-1 1])
   chi = piecewise(@(x,y,z) x.^2+y.^2+z.^2<1,1,0); % characteristic func
   [ triplequad(chi,-1,1,-1,1,-1,1), 4/3*pi ]
       ans =
              4.1888 4.1888


Piecewise Functions inspired this file.

MATLAB release MATLAB 7.4 (R2007a)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
08 Oct 2011 Maurizio De Pitta'

01 Jul 2008 rob bie

found this exactly when i needed it, thanks

21 Jun 2008 Swaminathan Padmanabhan

A useful functionality for many simulations.

Contact us