Code covered by the BSD License  

Highlights from
Envelope Detction for Signal Analysis


3.8 | 6 ratings Rate this file 155 Downloads (last 30 days) File Size: 649 KB File ID: #37545
image thumbnail

Envelope Detction for Signal Analysis



Computes the envelope of the signal by two methods: 1.LPF method 2.Hilbert Transform

| Watch this File

File Information

y=envelope(Signal,Fs) computes the Envelope of the input Signal with a Sampling Frequency 'Fs' and gives the envelope signal by Hilbert transform method as the output y.
The function computes the envelope of the signal by two different methods.

First Method: By Using Low Pass Filter. The Signal is Squared, passed
through LPF and then taken square root.
Second Method: Using Hilbert Transform. Hilbert Transform is taken using the inbuilt function in Matlab

The Function Displays the FFT of the original signal and also the FFT of
the envelope signal by both the methods

The function basically is for computing Envelope Signal for Condition Monitoring of rotating equipments by vibration based bearing fault diagnosis.


The File 's4.mat' is the vibration signal recorded from a OR faulty
bearing with a sampling frequency of 12000Hz. The Fault frequency is 161Hz and is brought out in envelope signal which was hidden in the original FFT.

Don't forget to rate or comment on the matlab central site

Author:Santhana Raj.A

Required Products Signal Processing Toolbox
MATLAB release MATLAB 7.13 (R2011b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (16)
10 Oct 2014 Santhana Raj

It seems that the length of the signal that you took is smaller than 4096. By default, I have taken a 4096 point FFT. So, unless you feed in a signal larger than 4096, the code will throw error.

Possible solutions are that you either pad zeros to your signal or reduce the No of points of the FFT(Variable N in the code)

09 Oct 2014 Haroldo

"Index exceeds matrix dimensions
Error in envelope (line 46)"


30 Jul 2014 Chintan

Hello Santhana,

Many thanks.

I have sent you an email on your gmail account.

Best Regards


30 Jul 2014 Santhana Raj


The carrier must be present in the received signal for envelope detection to work. The formula is (1+m(t))*c(t)

Any specific doubts, you can drop me a mail.

30 Jul 2014 Chintan

Hello Santhana,

Many thanks for your quick reply. Just one last question. I did some simulation for Amplitude modulations, where my message frequency is 10 Hz and carrier frequency is 100 Hz. But after running your script, the detected frequency is 20 Hz and not 10 Hz.

N = 50000;

fs = 1000;

t = (0:N-1)/fs;

msg = cos(2*pi*10*t);

carrier = cos(2*pi*100*t);

x = msg.*carrier;

output = envelope(x, fs);

Many thanks.

Best Regards


30 Jul 2014 Santhana Raj


Am not Fully Sure of the carrier frequency. But I have always assumed it to be the natural frequency of the system, either bearing or the motor itself. But whatever be the case, the carrier frequency is supposed to be very high and a generally a 0.1 cut off frequency would comfortably remove it here.

Hope this helps.

29 Jul 2014 Chintan

Hello Santhana,

Thanks for your reply. In bearing analysis, what is considered as carrier frequency? I have read few papers and all say different definitions.


Best Regards


12 Jun 2014 Santhana Raj


Yep. U guessed right. The shaft speed is about 29Hz.

Thanks for Rating.

06 Jun 2014 Chintan

Hi Santhana,

Very nice code and good example. I just have one question. The other spike at 29.3 Hz, does it correspond to shaft speed?

Many thanks.


08 Mar 2014 Ruiyan

good, can be used normally.thanks very much.

08 Jun 2013 Theodoros  
10 Dec 2012 ahmed albakri

Hi friend , thank you very much

05 Aug 2012 g├╝lsevin  
19 Jul 2012 n chow  
19 Jul 2012 Santhana Raj

@Jan Simon

True, This is just a demonstration of the two methods. Who would want to use different methods when one's ultimate aim is to do some envelope detection.

I thought it would be easier, as any one can compare the methods for their application and use the code from the program by coping those set of lines and reusing them in their main code.

18 Jul 2012 Jan Simon

"clc; close all;" is not a friendly idea. Why do you want to close my figures?

This function cannot be used to create the envelope directly. It is more a demonstration of the two different method with harddoced coefficients, creation of figures and overwriting the output y repeatedly. So before a user can calculate the envelopes matching to a specific problem, substantial re-programming is required.

Contact us