How to change values between two values in an array

21 vues (au cours des 30 derniers jours)
Jake Jordan
Jake Jordan le 4 Oct 2021
I need to replace certain values within an array that fall between 2 and 4. The code should find where the array equals 2 and then find the following location where the array equals 4 and replace all values with 3. Then it should find where the array equals 4 and then find the following location where the array equals 2 and replaces all of those values with 1. And then loop through the array until all values are 1, 2, 3 or 4 and in order (repeats of values are OK).
Here is an example array:
transitions = [1285738, 2, 2, 2915260, 4, 4290129, 2, 5650291, 4, 8030363, 2, 9337983, 4, 12040647];
I need to:
  1. change the values that fall between 2 and 4 to 3 (e.g., the 4th, 8th and 12th values should be 3)
  2. change the values between 4 and 2 to 1 (e.g., the 6th and 10th values should be 1)
  5 commentaires
the cyclist
the cyclist le 4 Oct 2021
I understood @Jake Jordan's rules to be:
  1. If a 4 follows a 2, change every intervening value to 3, THEN
  2. If a 2 follows a 4, change every intervening value to 1
DGM
DGM le 4 Oct 2021
Modifié(e) : DGM le 4 Oct 2021
... oh.
I guess "between" is one of those expressions like "in a row" that are sneakily ambiguous when talking about array structures.
EDIT: oof. I didn't even see OP's comment.

Connectez-vous pour commenter.

Réponses (1)

Swatantra Mahato
Swatantra Mahato le 7 Oct 2021
Hi Jake,
I am assuming you want to replace values in the array that occur between a 2 and 4, and those that occur between a 4 and 2.
One way of doing this I can think of is using the "find" function to get the indices of all the 2s and 4s as demonstrated below
transitions = [1285738, 2, 2, 2915260, 4, 4290129, 2, 5650291, 4, 8030363, 2, 9337983, 4, 12040647];
t=find(transitions==2)
t = 1×4
2 3 7 11
f=find(transitions==4)
f = 1×3
5 9 13
you can then loop over 'f' and 't' and replace the values in between accordingly
you can find more information and how-to examples on the "find" function in the documentation
Hope this helps

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!

Translated by