Split array into groups of close numbers
    4 views (last 30 days)
  
       Show older comments
    
Greetings,
Is there a built-in function in MATLAB to split an 1D array into groups of close numbers?
For example, I have an array
a = [1 2 3 10 11]
 and want to split it into N = 2 groups. I expect to see something like
result{1} = [1 2 3]
result{2} = [10 11]
1 Comment
  Dyuman Joshi
      
      
 on 8 Dec 2023
				How do you define close numbers? 
Where the difference between adjacent numbers in 1?
Accepted Answer
  Stephen23
      
      
 on 8 Dec 2023
        a = [1,2,3,10,11];
n = 2;
x = kmeans(a(:),n)
c = accumarray(x,a(:),[],@(a){a})
0 Comments
More Answers (1)
  Walter Roberson
      
      
 on 8 Dec 2023
        No -- because there is no rigourous meaning to what "close" means.
For example, in [1 3 5 7], surely 1 is not "close" to 7, but 5 is (probably) close to 7. Then 3 is "close" to 5, and 1 is "close" to 3. So are they all to be considered close as a group, even though 1 is "far" from 7 ?
Now, if the question were about dividing up into groups of consecutive values, then that would not be too difficult.
You could also use something like
N = 2;
a = [1 2 3 10 11]
[g, centroids] = kmeans(a(:), N)
0 Comments
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


