Compare two vector arrays and if they match set vector array 2 = nan?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MKM
el 11 de Feb. de 2022
Comentada: Arif Hoq
el 11 de Feb. de 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?
Thanks in adavnce!
0 comentarios
Respuesta aceptada
Walter Roberson
el 11 de Feb. de 2022
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]
outcome = solution;
outcome(solution == 0 & time == 0) = nan
It is not clear what you want to have happen in positions where the values are equal, but the values are not 0.
3 comentarios
Walter Roberson
el 11 de Feb. de 2022
solution(time ==0 & solution==0) = nan;
if ~any(isnan(solution)); return; end
Más respuestas (1)
Arif Hoq
el 11 de Feb. de 2022
Editada: Arif Hoq
el 11 de Feb. de 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]
2 comentarios
Stephen23
el 11 de Feb. de 2022
FIND is not required, logical indexing is simpler and more efficient.
It would be better to allocate a scalar NaN.
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!