How to set bottom repeating elements in matrix to NaN?

2 views (last 30 days)
I have matrix of large size and I need to change the bottom repeating elements to nan. For instance:
a = [ 1 2 3 2 1 3
3 1 1 3 1 2
1 2 3 3 2 1
1 2 1 2 1 3
1 2 3 1 2 1];
In this matrix, I want to change the bottom repeating numbers. If the numbers are repeating on top, I don't want to do anything to them. Just want to replace the bottom repeating number by NaNs. Any help will be greatly appreciated.
Thank you.
  7 Comments
Dyuman Joshi
Dyuman Joshi on 16 Jun 2022
Moved: Dyuman Joshi on 26 Aug 2023
Okay. Just a note - If you want a general answer, do mention information explicitly. Answers will always be tailored according to the information you give. So limited data results in particular answer rather than a general solution.
I could only understand what you want to obtain after you gave another example above. Nonetheless, you got your answer.
Sushil Pokharel
Sushil Pokharel on 16 Jun 2022
Moved: Dyuman Joshi on 26 Aug 2023
@Dyuman Joshi you are absolutely right. Sorry for the inconvenience.

Sign in to comment.

Accepted Answer

Voss
Voss on 16 Jun 2022
a = [ 1 2 3 2 1 3
3 1 1 3 1 2
1 2 3 3 2 1
1 2 1 2 1 3
1 2 3 1 2 1];
to_nan = cummin(a(1:end-1,:) == a(end,:),1,'reverse');
to_nan = to_nan([1:end end],:);
a(to_nan) = NaN
a = 5×6
1 2 3 2 1 3 3 1 1 3 1 2 NaN NaN 3 3 2 1 NaN NaN 1 2 1 3 NaN NaN 3 1 2 1
  4 Comments
Sushil Pokharel
Sushil Pokharel on 17 Jun 2022
hi @Voss, I really appreciate your help. now I have clear understanding about the code. Thank you so much for your help.

Sign in to comment.

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!