OPTIMAL NON-ITERATIVE MINIMUM ENTROPY DECONVOLUTION SOLUTION
code by Geoff McDonald (email@example.com), 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.
C A. Cabrelli, Minimum entropy deconvolution and simplicity: A
non-iterative algorithm, Geophysics, Vol. 50. No. 3. March 1984.
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
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
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);
Geoff McDonald (2020). omeda(x,filterSize,plotMode) (https://www.mathworks.com/matlabcentral/fileexchange/53482-omeda-x-filtersize-plotmode), MATLAB Central File Exchange. Retrieved .
- Updated descriptions to indicate this solves for the optimal solution to a problem that is similar to MED, not exactly the same.
- Title change.