Split array into groups of close numbers
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Denis Perotto
le 8 Déc 2023
Réponse apportée : Stephen23
le 8 Déc 2023
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 commentaire
Dyuman Joshi
le 8 Déc 2023
How do you define close numbers?
Where the difference between adjacent numbers in 1?
Réponse acceptée
Stephen23
le 8 Déc 2023
a = [1,2,3,10,11];
n = 2;
x = kmeans(a(:),n)
c = accumarray(x,a(:),[],@(a){a})
0 commentaires
Plus de réponses (1)
Walter Roberson
le 8 Déc 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 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!