Splitting the signal into different parts.

5 次查看(过去 30 天)
I am trying to analyze and apply filter to a signal(measurements). But the problem is while recording the measurements, between 2 timestamps the value was not recorded, so the program used to record these measurements just connected these 2 loose ends, this is a problem for my algorithm. so i want to split the signal into multiple parts based on this abnormality. I need to do this automatically. Below is the image of the abnormality.
Below i have shown a pic of plot(diff(t)).
So my signal will now divided into 3 parts. Any idea how to do this will be appreciated.
  3 个评论
JA
JA 2016-6-8
I just zoomed in to show how it looks, there is actually 2 time gaps.
JA
JA 2016-6-8
the t index around 7500, is the one showing from t= 20, to t = 21.

请先登录,再进行评论。

回答(1 个)

goerk
goerk 2016-6-8
编辑:goerk 2016-6-9
If you have a signal like this shown in Figure2 you can use this information.
changeDetected = [false, diff(t)>0.1]; %get the points with a time step
categoryID = cumsum(changeDetected); %get the category of the time-slot (starting from 0)
nofCategorys = categoryID(end)+1; % number of found time-slots
for ii = 1:nofCategorys
mask = categoryID == (ii-1); % get a mask for the current category
extractedSignal = signal(mask); % get the signal of the current time slot
erg(ii)=yourAlgorithm(extractedSignal); % make your calculations
end
where your input data are the vetors 'signal' and 't'.
  7 个评论
goerk
goerk 2016-6-9
编辑:goerk 2016-6-9
Yes, you can loop through all categorys (time-slots) and analyse the specific signal part. I fixed this typo in the statement above.

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by