Automatic activity detection in noisy signals with Hilbert transfrom

Automatic Signal Segmentation and activity detection with Hilbert Transform and smoothing.
2.8K Downloads
Updated 22 Jun 2018

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

%% function alarm = envelop_hilbert(y,Smooth_window,threshold_style,DURATION,gr)
%% Inputs ;
% y = Raw input signal to be analyzed
% Smooth_window :this is the window length used for smoothing your signal
% threshold_style : set it 1 to have an adaptive threshold and set it 0
% to manually select the threshold from a plot
% DURATION : Number of the samples that the signal should stay
% gr = make it 1 if you want a plot and 0 when you dont want a plot
%%%%%%%
% Tuning parameters for the best results;
%%%%%%%
% 1. DURATION is correlated to your sampling frequency, you can use a multiple
% of your sampling frequency e.g. round(0.050*SamplingFrequency)
% 2. Smooth_window is correlated to your sampling frequency, you can use a multiple
% of your sampling frequency e.g. round(0.0500*SamplingFrequency), this is
% the window length used for smoothing your signal
%% Outputs ;
% alarm : vector resembeling the active parts of the signal
%% Method
% Calculates the analytical signal with the help of hilbert transfrom,
% takes the envelope and smoothes the signal. Finally , with the help of an
% adaptive threshold detects the activity of the signal where at least a
% minimum number of samples with the length of
% (DURATION) Samples should stay above the threshold). The threshold is a
% computation of signal noise and activity level which is updated online.
%% Example and Demo
% To run demo mode simply execute the following line without any input;
% Example 1 :
% alarm = envelop_hilbert()
% The script generates one artificial signal and analysis that
% v = repmat([.1*ones(200,1);ones(100,1)],[10 1]); % generate true variance profile
% y = sqrt(v).*randn(size(v));

% Example 2 : For real world signals with a certain Sampling frequency
% called (Fs) (In this example a smoothing window with length 200 msec,)
% alarm = envelop_hilbert(signal,round(0.050*Fs),1,round(0.020*Fs),1)

%% Author : Hooman Sedghamiz
% hoose792@student.liu.se
%(Hooman.sedghamiz@medel.com)
% Copy right April 2013

% Edited March 2014

Cite As

Hooman Sedghamiz (2024). Automatic activity detection in noisy signals with Hilbert transfrom (https://www.mathworks.com/matlabcentral/fileexchange/46139-automatic-activity-detection-in-noisy-signals-with-hilbert-transfrom), MATLAB Central File Exchange. Retrieved .

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

Inspired: BioSigKit a toolkit for Bio-Signal analysis

Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes
1.3.0.0

-Better preallocation
-Speed up
- title updated

1.2.0.0

description updated.

1.1.0.0

better name for the function

1.0.0.0