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

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?
Thanks in adavnce!

 Accepted Answer

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.

3 Comments

Thanks for this. Sorry, I only wanted the solution's '0s' to = nan WHEN the positions of time & solution both = 0, else ignore and leave the solution's 0 untouched. Any other position that are equal i.e. when time is 2 and solution is 2 should not be changed.
Would this work if it was in a statement:
if outcome(solution == 0 & time == 0)
outcome == 0 = nan;
Thanks
if any(time==0 & solution == 0)
solution(time ==0 & solution==0)=nan;
else
return
end
Used this solution in the end, so the solution is - update where time and solution 0s are equal and if not return to script
solution(time ==0 & solution==0) = nan;
if ~any(isnan(solution)); return; end

Sign in to comment.

More Answers (1)

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

2 Comments

FIND is not required, logical indexing is simpler and more efficient.
It would be better to allocate a scalar NaN.

Sign in to comment.

Products

Release

R2021b

Asked:

MKM
on 11 Feb 2022

Commented:

on 11 Feb 2022

Community Treasure Hunt

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

Start Hunting!