How to remove noise from the signal and identify the peaks for each cycle of the total signal

10 views (last 30 days)
Hi everyone,
I have medical data of aorata, In which I want to remove the noise signals and identify the peaks and interference. After that I want to separate the each cycles
from starting point of peak to ending point of the peak for total signal present.
Can any one help me how to proceed on.
Thank you very much for your time.
  4 Comments
Lokeswara reddy pamulapate
Edited: Image Analyst on 22 Nov 2019
Ya I tried with sgolayfit() but did not work
In the data when we zoom in we get so many peaks in the data. There are some noisey signal which i want to remove.
Image Analyst
Image Analyst on 22 Nov 2019
It's not really clear why some of the peaks got marked with red and some didn't. Can you explain in words what criteria you're using to say whether a peak is a legitimate peak instead of a noise peak?

Sign in to comment.

Accepted Answer

Daniel M
Daniel M on 22 Nov 2019
Your data has too many artifacts to allow easy processing. You would first need to visually/manually go through your data and select chunks of it that are free of artifacts. Long periods of flat noise and large spontaneous non-periodic spikes I would consider to be artifacts. Possibly the sensor was not attached properly and the impedance was too high, possibly motor stimulation or other muscular artifacts. You can't analyze this data effectively, without more advanced techniques (like independent component analysis).
If this is EKG data, the typically preprocessing is to bandpass filter from 0.5-150 Hz, depending on your sampling rate, then notch filter the line noise (typically 50 or 60 Hz plus the harmonics). You could possibly use an sgolayfilt to remove other types of noise. You may also need to do other detrending of baseline shift.
If you need help with any of this, let us know, or search MATLAB Answers. I have personally written answers to dozens of questions regarding EKG, as well as how to do bandpass and notch filters. Search with: answered_by:"Daniel M" to get answers I have contributed.
After that, to extract the peaks and epoch the data, follow the example on this page:

More Answers (1)

mahyar
mahyar on 3 Feb 2020
I assume your goal is event detection. You need to apply more agressive filter to remove high frequency noise and obtain smoother signal. Then apply "findpeaks" function to your data to identify the peaks and apply again to inverted data to detect some potential onset/offset. Then you might set some thresholds to select best identified points to finaly extract the events.

Community Treasure Hunt

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

Start Hunting!