Remove Undercuts

Remove undercuts from an x,y data set. This can make it possible to interpolate a data set that otherwise could not be.
5 Downloads
Updated 9 Dec 2021

View License

function [xout,yout]=undercutRemoval(xin,yin,varargin)
Remove undercuts from an x,y dataset.
An undercut or uppercut (collectively, undercuts) in an x,y data set is one or more data points whose x values are less than or equal to previous x-values. In other words, an undercut is a data segment that "curves back on itself". Data sets with undercuts cannot be interpolated with interp1(). Removing the undercuts will make the data interpolate-able. The user may specify one of four methods, or not. Method 1 is the default. Figure below shows the difference between methods.
  • Method 1: Remove down-going undercuts by a two-pass approach
  • Method 2: Remove up-going uppercuts by a two-pass approach
  • Method 3: Remove under- and uppercuts, proceeding from beginning to end
  • Method 4: Remove under- and uppercuts, proceeding from end to beginning
See undercutRemovalTest.m for a demonstration of the function and example of the different methods. The demonstration program uses data in file undercutdata.txt.
I beleive the following statements are true, but have not proved them:
  • Method 1 has an upward bias, i.e. mean(yout)>=mean(yin)
  • Method 2 has a downward bias, i.e. mean(yout)<=mean(yin)
  • Methods 3,4 are unbiased, i.e. exp.val(mean(yout))=exp.val.(mean(yin))

Cite As

William Rose (2024). Remove Undercuts (https://www.mathworks.com/matlabcentral/fileexchange/103195-remove-undercuts), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2021b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.0.0