Why do I get the error "Invalid or deleted object." for the following code?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
When I run the code for the first time, I get this error. However when I run it for a second time my code is able to run through to completion.
start = pi;
points = 250; % decrease to increase speed of marker
end_ = 0;
disc = pi/16;
theta = linspace(pi,0,points);
rho = sin(theta);
theta2 = linspace(0,pi,points);
rho2 = -sin(theta2);
p = polarscatter(theta(1),rho(1),'o','Filled','red');
for i = 0:15
interval = linspace(start+i*disc,end_+i*disc,points);
interval2 = linspace(end_+i*disc,start+i*disc,points);
polarplot(interval,rho)
hold on
for k = 2:length(interval)
p.XData = interval(k);
p.YData = rho(k);
drawnow
end
pause(0.1)
polarplot(interval2,rho2)
for k = 2:length(interval2)
p.XData = interval2(k);
p.YData = rho2(k);
drawnow
end
pause(0.1)
end
disp('Finished.')
0 commentaires
Réponse acceptée
Adam Danz
le 27 Juin 2018
Modifié(e) : Adam Danz
le 27 Juin 2018
The reason you're getting the error is because you're updating p.XData where p is the output to polarscatter() however your call to polarplot() overwrites that axis so p is gone.
A solution is to grab the axis handle of polarscatter(), hold the axis, and pass the handle to your two calls to polarplot().
Grab the handle, hold the axis
p = polarscatter(theta(1),rho(1),'o','Filled','red');
ph = p.Parent; %axis handle
hold(ph, 'on')
Pass the handle to polarplot()
polarplot(ph,interval,rho)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Graphics Object Properties 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!