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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1101785/image.png)
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
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)
figure
hold on
plot(y)
plot(trigger, 'r:');
xline(ipt, 'g');
grid on; box on
xlim([1 2e4])
3 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Multirate Signal Processing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!