Split array into groups of close numbers
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Dyuman Joshi
il 8 Dic 2023
How do you define close numbers?
Where the difference between adjacent numbers in 1?
Risposta accettata
Stephen23
il 8 Dic 2023
a = [1,2,3,10,11];
n = 2;
x = kmeans(a(:),n)
c = accumarray(x,a(:),[],@(a){a})
0 Commenti
Più risposte (1)
Walter Roberson
il 8 Dic 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 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!