How do I do multi animated lines in one axes?
    28 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I need to do two multi animated lines in one axes.Is there any solution to this problem? As picture shows: This picture use "plot" ,but It's slowly when close to the end. And the matlab give a suggestion :use animatline to instead the plot function.

0 commentaires
Réponse acceptée
  Thorsten
      
      
 le 30 Août 2016
        
      Modifié(e) : Thorsten
      
      
 le 30 Août 2016
  
      Just create a second animatedline and use addpoints:
    numpoints = 100000; 
    x = linspace(0,4*pi,numpoints); 
    y = sin(x); 
    y2 = cos(x);
    figure 
    h = animatedline; 
    h2 = animatedline;
    axis([0,4*pi,-1,1]) 
    for k = 1:numpoints 
      addpoints(h,x(k),y(k)) 
      addpoints(h2,x(k),y2(k)) 
      drawnow update 
    end
4 commentaires
  Walter Roberson
      
      
 le 16 Août 2020
				saveas() or print() 
Or getframe() and imwrite() the data part of it.
  Koen
 le 17 Nov 2020
				I want to add animatedlines programmatically rather than using h1, h2, h3... (number of lines depends on certain input arguments in code)
h(1:num_lines) = animatedline
creates an animatedline array. I'm trying to access these in a loop where data is updated by doing something like
for x = 1:10
    for i = 1:num_lines
        y = i*x;
        addpoints(h(i),x,y)
    end
end
Intuitively, I would expect this code to create straight lines with different slopes. However this does not seem to work this way: it creates a single line (instead of num_lines), concatenating values h(1:num_lines). Is it possible to use animatedline in a similar way; using indices to feed data?
Plus de réponses (2)
  Le Dung
 le 15 Déc 2017
        
      Modifié(e) : Le Dung
 le 15 Déc 2017
  
      I suggest to you another approach, i think it is familiar to anyone. You can use "hold on" after "figure" And, of course, at the moment, "update" in "drawnow is no need. I will use example that Thorsten is given. Of course, to reduce cost time, i use 1000 to replace for 100000.
numpoints = 1000; 
    x = linspace(0,4*pi,numpoints); 
    y = sin(x); 
    y2 = cos(x);
    figure 
    hold on % To hold this figure.
    h = animatedline; 
    h2 = animatedline;
    axis([0,4*pi,-1,1]) 
    for k = 1:numpoints 
      addpoints(h,x(k),y(k)) 
      addpoints(h2,x(k),y2(k)) 
      drawnow % "update" is no need for this case
    end
1 commentaire
Voir également
Catégories
				En savoir plus sur Animation dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






