File Exchange

image thumbnail

Automatic activity detection in noisy signals with Hilbert transfrom

version 1.3.0.0 (5.85 KB) by Hooman Sedghamiz
Automatic Signal Segmentation and activity detection with Hilbert Transform and smoothing.

25 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 (2019). 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 .

Comments and Ratings (5)

Updates

1.3.0.0

- title updated

1.3.0.0

-Better preallocation
-Speed up

1.2.0.0

description updated.

1.1.0.0

better name for the function

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

Inspired: BioSigKit a toolkit for Bio-Signal analysis