Compare two vector arrays and if they match set vector array 2 = nan?

1 view (last 30 days)
MKM on 11 Feb 2022
Commented: Arif Hoq on 11 Feb 2022
So i have two arrays the same size:
time = [0,0,0,0,2,3,4,5,5,6,7,8]';
solution = [1,2,0,0,1,1,2,2,2,0,0,0];
What would be the best way to compare the two and if both are the same make solution 0 = nan;
So the final outcome i would like is solution = [1,2,nan,nan,1,1,2,2,2,0,0,0];
would i use a function such as:
if strfind(time,solution)==0
Do something?

Walter Roberson on 11 Feb 2022
time = [0,0,0,0,2,3,4,5,5,6,7,8]
time = 1×12
0 0 0 0 2 3 4 5 5 6 7 8
solution = [1,2,0,0,1,1,2,2,2,0,0,0]
solution = 1×12
1 2 0 0 1 1 2 2 2 0 0 0
outcome = solution;
outcome(solution == 0 & time == 0) = nan
outcome = 1×12
1 2 NaN NaN 1 1 2 2 2 0 0 0
It is not clear what you want to have happen in positions where the values are equal, but the values are not 0.
Walter Roberson on 11 Feb 2022
solution(time ==0 & solution==0) = nan;
if ~any(isnan(solution)); return; end

Arif Hoq on 11 Feb 2022
Edited: Arif Hoq on 11 Feb 2022
Try this...
time = [0,0,0,0,2,3,4,5,5,6,7,8];
solution = [1,2,0,0,1,1,2,2,2,0,0,0];
[idx]=find(time==solution);
solution(idx)=[NaN NaN]
solution = 1×12
1 2 NaN NaN 1 1 2 2 2 0 0 0
Arif Hoq on 11 Feb 2022
@Stephen Thank you very much for the clue

Categories

Find more on Matrix Indexing in Help Center and File Exchange

R2021b

Community Treasure Hunt

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

Start Hunting!