2.11.17 smooth
Menu Information
Analysis: Signal Processing: Smooth
Brief Information
Performing smoothing of XY data to remove noise or irregularities
Additional Information
This feature is updated in 9.1 SR1. With the options of Lowess and Loess as smoothing method.
Command Line Usage
1. smooth //Perform default smoothing to active data plot or highlighted 1st column in worksheet. smooth %C also works so
2. smooth (1,2) //Perform default Savitzky-Golay filtering using default settings, to XY data in columns 1, 2 of the active worksheet
3. smooth iy:=Col(2) boundary:=periodic; //Perform default Savitzky-Golay filtering with Boundary Condition set to periodic, to Y data in 2nd column of active worksheet
4. smooth iy:=Col(2) polyorder:=3; //Perform Perform default Savitzky-Golay filtering with Polynomial Order set to 2, to Y data in 2nd column of active worksheet
5. smooth iy:=Col(2) method:=pf percent:=70; //Perform smoothing with Percentile Filtering method, percentile is set to 70, to Y data in 2nd column of active worksheet
6. smooth -t "my short noise removal theme.oth" //Perform smoothing to active plot or selected column using a pre-saved smoothing theme file you saved in the smoothing dialog
7. smooth -d //open smooth dialog
X-Function Execution Options
Please refer to the page for additional option switches when accessing the x-function from script
Variables
Display Name
|
Variable Name
|
I/O and Type
|
Default Value
|
Description
|
Input
|
iy
|
Input
XYRange
|
<active>
|
Specifies the input XY data range to be smoothed
|
Method
|
method
|
Input
int
|
sg
|
Specifies the smoothing method to be used. The default is Savitzky-Golay.
Option list:
- aav: Adjacent-Averaging (0)
- This method essentially takes the average of a certain number (which you specify) of data points around each point in your data and replaces that point with the new average value.
- sg: Savitzky-Golay (1, default)
- This method is actually performing a local polynomial regression. It is best suited to remove noise without affecting the overall signal shape. Original data values are replaced with fitted values.
- pf: Percentile Filter (2)
- This method is also known as rank-order filter. It essentially finds the specified percentile of data points in the data window around each point in your data and replaces that point with the percentile. It is best suited for removing shot noise.
- fft:FFT Filter (3)
- This method is based on FFT low-pass filter. It should be used when the frequency of noise is higher than the true signal. In essence, it removes the high-frequency components with a parabolic window. Frequencies not less than the cutoff frequency will be discarded.
- lw:Lowess (4)
- le:Loess (5)
- These two options above are "locally weighted scatter plot smoothing". They are best used when there are a large number of data points. Please refer to the algorithm page for details.
- bm:Binomial (6)
- This method uses a weighted moving average filter whose weight is derived from binomial coefficients. It is a low-pass filter for removing high frequency noise.
|
Weighted Average
|
weight
|
Input
int
|
0
|
This parameter is available only when Method is Adjacent-Averaging. When this parameter is set to 1 (checked), weighted averaging will be used.
|
Specify Span by
|
prop
|
Input
int
|
1
|
This variable is available only when Method is either Lowess or Loess.
Option list:
- 0=pts: Points of Window
- Use point of windows for span
- 1=prop: Proportion
- Use the proportion (0-1) for span
- 2=x: X Value
- Use the specified X value for span
|
X Value
|
xval
|
Input
double
|
0
|
When X Value is selected for Specify Span by, specifies the X Value. By default, this X Value is 0.1*(x max-x min).
|
Span (0-1)
|
span
|
Input
double
|
0.1
|
This is only available when Proportion is selected for Specify Span by (i.e. prop = 1). It specifies the proportion value for the span. The bigger the value is, the smoother the curve will be.
|
Points of Window
|
npts
|
Input
int
|
5
|
If FFT Filter is not selected for Method, this parameter specifies the number of points in the moving window. Otherwise, you can use this parameter to control the cutoff frequency for the FFT filter. The greater this value, the greater the degree of smoothing. It must be a non-zero positive value. See the Algorithm part for the computation of cutoff frequency.
|
Boundary Condition
|
boundary
|
Input
int
|
none
|
Specifies the boundary condition. It is not available when FFT Filter/Lowess/Loess is selected for Method.
Option list
- none:None
- Does no padding
- reflect:Reflect
- Pads data by reflecting signal at both ends
- repeat:Repeat
- Pads data by repeating the ending point at both ends
- periodic:Periodic
- Treats data as a periodic signal
- extrap:Extrapolate
- Uses linear extrapolation to pad signal at both ends
|
Polynomial Order
|
polyorder
|
Input
int
|
2
|
This parameter applies only to the Savitzky-Golay smoothing option. It specifies the polynomial order.
|
Percentile
|
percent
|
Input
double
|
50
|
This parameter determines the percentile to be used in percentile filtering. The default is 50%, which corresponds to replacing the signal point with median value of the data points in the data window.
|
Cutoff Frequency
|
cutoff
|
Input
double
|
0
|
This parameter is visible in GUI when FFT Filter is selected for Method. It is a read-only variable showing the cutoff frequency of the low-pass filter calculated from Points of Window. Please do not use it in script.
|
Pad to Power of 2 Points
|
pad
|
Input
int
|
0
|
This parameter is available only when FFT Filter is selected for Method. It is available only from script. It specifies whether to pad the number of data points to power of 2. When this is set to 1, the result will match the result calculated with Origin prior to the Version 8. See more details in the Algorithm part.
|
Filter Type
|
filter
|
Input
int
|
new
|
This parameter is available only when FFT Filter is selected for Method. It is available only from script. It specifies the filter type. When old is selected, the result will match the result calculated with Origin prior to the Version 8.
Option list:
- low-pass parabolic filter
- old:Low-pass parabolic(7.5)
- low-pass parabolic filter which is used in Origin 7.5
|
Baseline to Subtract
|
baseline
|
Input
int
|
two_ends_1
|
This parameter is available only when FFT Filter is selected for Method. It is available only from script. It specifies whether to subtract a baseline before fft filtering is used.
Option list:
- two_ends:Straight Line Obtained from End Points
- Subtracts the input data with a straight line constructed from the two end points before fft filtering is applied.
- two_ends_1:Straight Line Obtained from the mean of 1% End Points
- Subtracts the input data with a straight line constructed from the mean of 1% end points before fft filtering is applied.
- No subtraction is performed on input data before fft filtering is applied.
|
Output
|
oy
|
Output
XYRange
|
<new>
|
Specifies the destination of smoothed signal.
See the syntax here.
|
Examples
This example shows how import gaussian.dat into Origin.
Use white_noise X-Function to add white noise to it.
Use plotxy X-Function to plot the noised data
Smooth the data and then plot the the smoothed data in another new graph.
// Load data to a new book
fname$ = system.path.program$ + "\Samples\Curve Fitting\Gaussian.dat";
newbook;
impASC;
string bkn$=%H;
// add noise into the data
white_noise [bkn$]1!(2) level:=10;
// plot the noised data
plotxy [bkn$]!(1,2) plot:=200 ogl:=[<new>]<new>;
// smooth the noised data
newsheet book:=bkn$ name:="Smoothed Data";
copydata [bkn$]1!(1) [bkn$]"Smoothed Data"!(1);
smooth iy:=[bkn$]1!(2) oy:=[bkn$]"Smoothed Data"!(2) npts:=10;
// plot the smoothed data
plotxy [bkn$]"Smoothed Data"!(1,2) plot:=200 ogl:=[<new>]<new>;
More Information
For more information, please refer to our User Guide.
Related X-Functions
fft1, fft_filters, wtsmooth
Keywords:adjacent averaging, savitzky golay, fft filter, lowess, loess, binomial, percentile
|