Insert NaNs (or any value) in several position of a vector
    11 views (last 30 days)
  
       Show older comments
    
    Luca Amerio
      
 on 11 Sep 2015
  
    
    
    
    
    Answered: Juliana Damaceno
      
 on 23 Jan 2019
            Hi i have a vector like this
a=[1 2 3 5 6 7 9 10 13 14];
I would like to find where the diff is bigger than a value (let's say one) and insert a NaN between the two positions. I need this to plot a discontinuous line that is interrupted if the X value grows too much.
I tried something like
ind=diff(a)>1
for i=1:length(a)
   if ind(i)
      a=[a(1:i),NaN,a(i+1:end)]
   end
 end
the problem is that whenever I add a NaN the followig value of a get shifted by one positiona and the positions in ind are no longer valid. I could shift ind too or I could copy each value of a into b adding NaN etc etc...
But they all seems over complicated method. Anyone got a good idea on how to do it?
thanks
0 Comments
Accepted Answer
  the cyclist
      
      
 on 11 Sep 2015
        Here is one way:
a=[1 2 3 5 6 7 9 10 13 14];
insertNanIndex = [0 diff(a)>1];
insertValue = (1-insertNanIndex)./0;
b_tmp = [a; insertValue];
b = b_tmp(:)';
b(isinf(b)) = [];
Notice that I temporarily fill in "Inf", and then extract it. So, if your original dataset has "Inf" in it, you will need to do a different dummy var.
More Answers (1)
  Juliana Damaceno
      
 on 23 Jan 2019
        If the jump is one followed by the other this way do not work :(
0 Comments
See Also
Categories
				Find more on Operators and Elementary Operations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

