Non-iterative optimal solution for Minimum Entropy Deconvolution (MED) and convolution fix.
Updated 25 Oct 2015

View License

code by Geoff McDonald (, 2015
A noniterative optimal MED (OMED) computation algorithm. This method
solves a similar deconvolution problem to MED, and is able to directly solve for
the optimal filter solution as proposed by Carlos Cabrelli. This can be used is rotating
machine fault detection from vibration signals to detect gear and bearing faults, and OMED
is applied to extract the impulse-like features in the vibration.
This implementation uses the convolution adjustment proposed by myself in the second paper
reference, which is important to prevent this method from reaching the trivial solution of
deconvolving the convolution discontinuity.

Note to readers, you may want to refer to some of my other MED submissions:
The iterative non-optimal solution is often better for vibration fault detections. It
is often better than this optimal solution, since the MED problem aims to deconvolve
only a single-impulse as the result. As a result, OMED is able to better-extract the
solution of deconvolving only the single-impulse, whereas MED more commonly
reaches the solution of deconvolving the desired impulse train.
This is the optimal solution to the periodic impulses and is recommended
for rotating machine faults instead of MED or OMED. Since it is non-iterative, it is able to
quickly generate spectrum's to diagnose machine health.

Algorithm Reference:
Original derivation:
C A. Cabrelli, Minimum entropy deconvolution and simplicity: A
non-iterative algorithm, Geophysics, Vol. 50. No. 3. March 1984.

Convolution adjustment:
G.L. McDonald, <others>, Multipoint Optimal Minimum Entropy Deconvolution and Convolution
Fix: Application to Vibration Fault Detection, unpublished

Signal to perform Minimum Entropy Deconvolution on.

This is the length of the finite inpulse filter filter to
design. Using a value of around 30 is appropriate depending on
the data. Investigate the performance difference using
different values.

If this value is > 0, plots will be generated of the iterative
performance and of the resulting signal.

The input signal(s) x, filtered by the resulting MED filter.
This is obtained simply as: y_final = filter(f_final,1,x);

The final 1d MED filter in finite impulse response format.

Final D-Norm of the filtered signal.

% Simple vibration fault model
close all
n = 0:1999;
h = [-0.05 0.1 -0.4 -0.8 1 -0.8 -0.4 0.1 -0.05];
faultn = 0.05*(mod(n,50)==0);
fault = filter(h,1,faultn);
noise = wgn(1,length(n),-40);
x = sin(2*pi*n/30) + 0.2*sin(2*pi*n/60) + 0.1*sin(2*pi*n/15) + fault;
xn = x + noise;

% 20-sample FIR filters will be designed
L = 20;

% Recover the fault signal
[y, f, d_norm] = omeda(xn,L,1);

Cite As

Geoff McDonald (2024). omeda(x,filterSize,plotMode) (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2014a
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

- Title change.
- Updated descriptions to indicate this solves for the optimal solution to a problem that is similar to MED, not exactly the same.