Effacer les filtres
Effacer les filtres

Sorting and replacing data in matlab

3 vues (au cours des 30 derniers jours)
Rubel Ahmed
Rubel Ahmed le 15 Oct 2020
Commenté : Rubel Ahmed le 16 Oct 2020
Hi all,
I have a position Array suppose "A"
A =[ 1, 0, 3, 4, 5, 6, 7, 8, 0, 0,15, 20, 10, 9].
I want to replace all those values of A which are grater than 5.
Here, the first element (in A, it is 6) which is grater than 5 will be replaced by a constant say c1
Then next element (in A, it is 7) which is grater than 5 will be replaced by a constant say c2 =c1+ a, where 'a' is a constant
After that the next element (in A, it is 8) which is grater than 5 will be replaced by a constant say c3 =c2+ a, where 'a' is a constant
...... So on.
I want to see the final Array like this
A =[ 1, 0, 3, 4, 5, c1, c2, c3, 0, 0, c4, c5, c6, c7].
N.B. if any element of A is less or equal than 5, the elements of A will be unchanged

Réponse acceptée

Ameer Hamza
Ameer Hamza le 15 Oct 2020
Modifié(e) : Ameer Hamza le 15 Oct 2020
Here is a vectorized alternative:
A = [ 1, 0, 3, 4, 5, 6, 7, 8, 0, 0,15, 20, 10, 9];
a = 1; c1 = 10;
idx = A > 5;
A(idx) = c1 + (0:nnz(idx)-1)*a;
Result
>> A
A =
1 0 3 4 5 10 11 12 0 0 13 14 15 16

Plus de réponses (1)

Alan Stevens
Alan Stevens le 15 Oct 2020
Here's one way:
A =[ 1, 0, 3, 4, 5, 6, 7, 8, 0, 0,15, 20, 10, 9];
c1 = 0.1; a = 0.01;
ix = find(A>5);
for i = 1:numel(ix)
A(ix(i)) = c1+(i-1)*a;
end

Catégories

En savoir plus sur Introduction to Installation and Licensing dans Help Center et File Exchange

Tags

Produits


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by