Effacer les filtres
Effacer les filtres

How can I get "least frequent" number from a vector?

3 vues (au cours des 30 derniers jours)
Sandy
Sandy le 26 Juin 2014
I know that "mode" is used to get the most frequent number in a vector. Is there any function that returns the "least frequent" number?
For example, a vector: 1 1 2 2 3 3 4 5 5 5 returns 4 since this number only appears once and all others appear more than once.
I guess I can solve this problem use "unique" and "hist", but I am just wondering if there is any better solution than that.
Thank you very much.

Réponse acceptée

Jos (10584)
Jos (10584) le 26 Juin 2014
Option 1: You can copy the code from mode.m and replace the function max by the function min on line 130 (in R2014a). Edit the help text accordingly, and save.
Option 2.
V = [2 2 1 1 4 5 5 5]
uv = unique(V)
n = histc(V,uv)
[m,i] = min(n)
minmode = uv(i)
  2 commentaires
Sandy
Sandy le 30 Juin 2014
Thank you, I love the first option.
Simão Pedro da Graça Oliveira Marto
In Option 1, in Matlab 2018b, you need to replace the max with a min in line 163, but also replace the "zeros" with "inf" in line 161.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB 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!

Translated by