find the start point of abrupt change in signal matlab

8 次查看(过去 30 天)
Hello,
I have a signal as y = [x y sh oa ahdv ...] and looks like as below:
I need to find the the point where signal increased abruptly and tried diff(), findchangepts(), ischange(), etc but any of them did not help me. I have 100 sample looks like this data so I am looking for a function that can do this job automatically.
I would be very grateful if anyone could help me.
Thanks.
Demet

采纳的回答

Chunru
Chunru 2022-8-20
编辑:Chunru 2022-8-22
load triggerInput.mat
plot(trigger)
trigger = trigger(1:2e4); % select the 1st part
%xlim([1 1e4])
%xlim([1500 2500])
% low pass the signal
%{
b = fir1(128, 0.001);
y = filtfilt(b, 1, trigger);
ipt = findchangepts(y,'MaxNumChanges',2)
yd = diff(y);
idx = find(yd>3e-3, 1, 'first')
figure
hold on
plot(y)
plot(trigger, 'r:');
xline(ipt, 'g');
grid on; box on
xlim([1 2e4])
fprintf('The change point at %d\n', ipt(2))
%}
Update based on your new explanation:
b = fir1(128, 0.001, 'high');
y = filtfilt(b, 1, trigger);
ipt = findchangepts(y,'Statistic', 'rms', 'MaxNumChanges',2)
ipt = 1×2
1733 7865
figure
hold on
plot(y)
plot(trigger, 'r:');
xline(ipt, 'g');
grid on; box on
xlim([1 2e4])
  3 个评论
Demet
Demet 2022-8-22
Hello,
I have checked the update and it works almost well. I have checked for each data and I decide to continue with this program as the maximum error is 30 for the sampling frequency is 512 (30/512=0.57 s).
Thank you!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multirate Signal Processing 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by