Effacer les filtres
Effacer les filtres

replace the unique value of a vector

2 vues (au cours des 30 derniers jours)
pavlos
pavlos le 9 Fév 2014
Modifié(e) : Jan le 9 Fév 2014
Hello,
Please help me with the following.
Consider a vector a=[2;3;3;5;5;5];
How can we replace the unique value "2" with the most populated one, i.e. "5".
The unique value can be found anywhere in the vector, in the above example it is shown as the first element.
The new vector should look like this:
b=[5;3;3;5;5;5];
Thank you very much.
Best,
Pavlos

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 9 Fév 2014
Modifié(e) : Azzi Abdelmalek le 9 Fév 2014
a=[2;3;3;5;5;5];
c=unique(a);
ii=histc(a,c)
[idx1,idx1]=min(ii)
[idx2,idx2]=max(ii)
minv=c(idx1)
maxv=c(idx2)
b=a
b(a==minv)=maxv
%or
a=[2;3;3;5;5;5];
c=unique(a);
ii=histc(a,c)
[~,jj]=sort(ii)
a(a==c(jj(1)))=c(jj(end))

Plus de réponses (2)

Jan
Jan le 9 Fév 2014
Modifié(e) : Jan le 9 Fév 2014
a = [2;3;3;5;5;5];
[B, N, Ind] = RunLength(a);
[maxNum, maxInd] = max(N);
mostValue = B(maxInd);
uniqueInd = Ind(N == 1);
a(uniqueInd) = mostValue;

pavlos
pavlos le 9 Fév 2014
Both methods work excellent.
Thank you very much.

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