How to replace half the number of specific element in an array?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello every one,
I have a row vector having 8236 columns, out of which 863 columns have a value 4. I want to replace 431 of the columns by a value 2. For simplicity, I am giving a vector having only 23 columns
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4]
Here, in this vector, there are 12 columns having a value 4. How to replace half the columns by a value 2?
Any help will be appreciated.
0 commentaires
Réponse acceptée
Stephen23
le 18 Juin 2018
Modifié(e) : Stephen23
le 18 Juin 2018
To change random columns:
>> A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4]
A =
1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4
>> nnz(A==4)
ans = 12
>> idx = find(A==4);
>> num = numel(idx);
>> A(idx(randperm(num,ceil(num/2)))) = 2
A =
1 2 3 2 2 1 2 4 4 3 2 4 2 2 1 3 2 4 4 2 1 2 4
>> nnz(A==4)
ans = 6
0 commentaires
Plus de réponses (2)
KALYAN ACHARJYA
le 18 Juin 2018
Modifié(e) : KALYAN ACHARJYA
le 18 Juin 2018
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4];
for i=1:length(A)/2;
if A(i)==4
A(i)=2;
end
end
0 commentaires
Ameer Hamza
le 18 Juin 2018
Modifié(e) : Ameer Hamza
le 18 Juin 2018
Here is one possible solution
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4];
index = find(A==4);
randomIndex = randperm(length(index));
A(index(randomIndex(1:end/2))) = 2;
it will randomly select which columns to change.
0 commentaires
Voir également
Catégories
En savoir plus sur Logical 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!