# Automatic border detection?

3 Ansichten (letzte 30 Tage)
JamJan am 3 Sep. 2019
Kommentiert: David K. am 3 Sep. 2019
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 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
JamJan am 3 Sep. 2019
That is to manual. I want Matlab to automatically identify those borders and thus segments
David K. am 3 Sep. 2019
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.

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Image Segmentation finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by