How can I detect constant signal patch from whole signal by using matlab script ?

조회 수: 9 (최근 30일)
Hi,
How can I detect constant signal patch from whole signal by using matlab script ? just like shown in red color in in below plot
I would need to detect that constant signal range as well as start and end point ?

답변 (2개)

KSSV
KSSV 2021년 9월 17일
x = 0:0.1:10;
y = gaussmf(x,[2 5]);
% Introduce constant value
[val,idx] = max(y) ;
idx0 = idx:idx+10 ;
y(idx0) = val ;
% Get the constant data indices
idx1 = find(diff(y)==0) ;
[idx0' [idx1(1)-1 idx1]']
  댓글 수: 2
Kaustubh hike
Kaustubh hike 2021년 9월 17일
편집: Kaustubh hike 2021년 9월 17일
Thnaks @KSSV, g
But exatcly didnt understand what exatcly your output tells .
KSSV
KSSV 2021년 9월 17일
I have shown the logic....Instead of (x,y) you use your data. It should work fine..If not share your data.

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2021년 9월 17일
편집: Image Analyst 2021년 9월 17일
If the constant is fairly flat, and is always in the upper portion (because you are not interested in flat parts near the minimum values at the bottom) you can find the difference and threshold it and use find(). Untested code (because you forgot to attach your data):
subplot(3, 1, 1);
plot(x, y);
grid on;
% Find difference from previous element.
diffValues = diff(y);
subplot(3, 1, 2);
plot(diffValues, 'b-');
% Find max, min, and mid values.
minValue = min(y);
maxValue = max(y);
midValue = (maxValue + minValue) / 2;
% Threshold
threshold = 15; % What ever value defines "flat" for you.
% Find indexes in the upper half that are "flat"
indexes = (y > midValue) & (diffValues < threshold);
subplot(3, 1, 3);
plot(indexes, 'b-');
% Find starting and stopping index
firstIndex = find(indexes, 1, 'first')
lastIndex = find(indexes, 1, 'last')
% Draw vertical lines on the plot
xline(firstIndex, 'Color', 'r', 'LineWidth', 2);
xline(lastIndex, 'Color', 'r', 'LineWidth', 2)

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by