How to change values between two values in an array

13 views (last 30 days)
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 Comments
the cyclist
the cyclist on 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 on 4 Oct 2021
Edited: DGM on 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.

Sign in to comment.

Answers (1)

Swatantra Mahato
Swatantra Mahato on 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

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!