How to change values between two values in an array

10 views (last 30 days)
Jake Jordan
Jake Jordan on 4 Oct 2021
Answered: Swatantra Mahato on 7 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 Comments
DGM
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

Community Treasure Hunt

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

Start Hunting!