# Automatic border detection?

조회 수: 2(최근 30일)
JamJan 2019년 9월 3일
댓글: David K. 2019년 9월 3일
Hi I have this array:
I want to automatically border segments of these indices. Is there a way without using a threshold to let Matlab these borders automatically and maybe by itself? Some kind of automatic segment detection function? Or do you have any suggestions how to come to the shown output?
A = [1 27 31 56 58 60 91 93 122 126 153 526 538 568 616 620 623 643 651 667 673 758 767 961 991 1053 1060]
plot(A, 1, '*')
Expected Output:
A1 = [1 27 31 56 58 60 91 93 122 126 153]
A2 = [526 538 568 616 620 623 643 651 667 673]
A3 = [758 767]
A4 = [961 991 1053 1060]
Thanks!
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
David K. 2019년 9월 3일
The question we have is what is the logic you used when determining these example segments. Will there always be only 4 segments? Will the numbers always be ordered from smallest to largest?
If the answer to both those questions is yes and the way you are separating them is the largest gaps. I would do this:
[vals, idxs] = sort(diff(A));
segBreaks = sort(idxs(end-3:end));
A1 = A(1:segBreaks(1));
A2 = A(segBreaks(1)+1:segBreaks(2));
A3 = A(segBreaks(2)+1:segBreaks(3));
A4 = A(segBreaks(3)+1:end);
If you have the classification learner app you could try to use that as well.

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

### Community Treasure Hunt

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

Start Hunting!

Translated by