フィルターのクリア

Find the location of the change

45 ビュー (過去 30 日間)
Tala Hed
Tala Hed 2019 年 1 月 13 日
編集済み: Star Strider 2019 年 1 月 25 日
Hi :)
I would like to find the location of the change in an array. The arrays are ramp and hold, i e. they contain several identical values then start to increase and then become constant again. The increase rates are different in each array.They are plotted below:
Capture.JPG
I want to plot a vertical line at the end and begining of each constant section. Can you help me with that?
Thanks

採用された回答

Star Strider
Star Strider 2019 年 1 月 13 日
編集済み: Star Strider 2019 年 1 月 25 日
If you have the Signal Processing Toolbox, consider using the findchangepts (link) function, with the 'Statistic','mean' name-value pair. (The findchangepts function was introduced in R2016a.)
EDIT — (25 Jan 2019 at 20:37 UCT)
Thank you for attaching your data.
The core MATLAB ischange (link) function (introduced in R2017b) turns out to be the best option for this.
The Code —
D = load('XX.mat');
XX = D.XX;
t = linspace(0, numel(XX), numel(XX));
[TF,SegMean,SegVar] = ischange(XX,'linear','Threshold',500);
cpts = find(TF);
figure
plot(t, XX)
hold on
plot(t(cpts), XX(cpts), '^r', 'MarkerFaceColor','r')
hold off
The Plot —
Find the location of the change - 2019 01 25.png

その他の回答 (1 件)

Image Analyst
Image Analyst 2019 年 1 月 13 日
Use diff() and line()
Something like (untested)
dy = 0, diff(y)];
% Get non-zero dy
mask = dy~= 0;
dy = dy(mask);
xx = x(mask); % Get x values at those locations.
hold on;
for k = 1 : length(dy)
thisX = xx(k); % Find the x location.
line([thisX, thisX], ylim, 'Color', 'r', 'LineWidth', 2); % Draw a vertical red line.
end
  1 件のコメント
Tala Hed
Tala Hed 2019 年 1 月 25 日
Thanks a lot. Sorry for my delay. Been out of the country.
The code didnt work. I tried to understand your code and use it, wasent succseful. Here is the vector. Would be grateful if you can help plotting the lines.
Thanks

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCalendar についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by