Indexing animated lines from array

2 次查看(过去 30 天)
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?

采纳的回答

Ameer Hamza
Ameer Hamza 2020-11-19
编辑:Ameer Hamza 2020-11-19
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Animation 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by