Indexing animated lines from array

6 visualizaciones (últimos 30 días)
Koen
Koen el 19 de Nov. de 2020
Comentada: Koen el 19 de Nov. de 2020
I would like to store multiple animatedline in one variable.
num_plots = 2;
for i = 1:num_plots
h(i) = animatedline;
end
makes this possible. However
h(1:num_plots) = animatedline;
does not work (points are concatenated, see code below).
for i = 1:100
for ih = 1:num_plots
x = i;
y = i*ih;
addpoints(g(ih),x,y)
end
end
Is there a way to avoid using a for loop?

Respuesta aceptada

Ameer Hamza
Ameer Hamza el 19 de Nov. de 2020
Editada: Ameer Hamza el 19 de Nov. de 2020
When you initialize an array of MATLAB graphics objects like this
num_plots = 2;
g(1:num_plots) = animatedline;
MATLAB creates a single instance of animatedline and assigns it to all elements. Since animatedline is a handle class, all elements of 'g' point to the same object
>> g(1)==g(2)
ans =
logical
1
The workaround is to use a for-loop to initialize so that each element is created independently. For a slightly easier syntax, you can use arrayfun()
num_plots = 2;
g = arrayfun(@(x) animatedline(), 1:num_plots);
for i = 1:100
for ih = 1:num_plots
x = i;
y = i*ih;
addpoints(g(ih),x,y)
end
end
  1 comentario
Koen
Koen el 19 de Nov. de 2020
Thank you very much for the explanation!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Animation en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by