Why is plot3 slow when I use it in a loop?

4 visualizaciones (últimos 30 días)
pink
pink el 8 de Jun. de 2011
I create plot3 in gui axes, if the number of elements that the many depictions of the process is very slow, if you can provide solutions
for i=1:length(AX(:,1))
plot3(AX(i,:),AZ(i,:),AY(i,:),'-c','LineWidth',0.25);
hold on
plot3(AXD(i,:),AZD(i,:),AYD(i,:),'-g','LineWidth',0.5);
end

Respuestas (2)

Andrew Newell
Andrew Newell el 8 de Jun. de 2011
You could try using line instead of plot3. You'll have to make sure all your options come in pairs, e.g.,
line(AX(i,:),AZ(i,:),AY(i,:),'LineStyle','-','Color','c','LineWidth',0.25);
See linespec for how to define each property.
EDIT: With the data you provided, I tried these commands and it worked fine.
for i=1:size(AX,2)
line(AX(i,:),AZ(i,:),AY(i,:),'LineStyle','-', ...
'Color','c','Marker','.','LineWidth',1)
line(AXD(i,:),AZD(i,:),AYD(i,:),'LineStyle','-', ...
'Color','g','Marker','.','LineWidth',1)
end
On my machine this is 4 times faster than using the code you provided. Note that when you use line the image is saved by default, so you don't need hold on.
  11 comentarios
Andrew Newell
Andrew Newell el 9 de Jun. de 2011
What do you mean?
pink
pink el 9 de Jun. de 2011
object generated using the "plot3" not the same as using the "line"

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 8 de Jun. de 2011
You only need to execute the "hold on" once; after that it is set and becomes a waste of time.
At some point, you are going to exceed the amount of memory that your graphics card has easily available; things will slow down then.
You could experiment with switching renderers.
  6 comentarios
Walter Roberson
Walter Roberson el 9 de Jun. de 2011
Should be size(AX,1) instead of length(AX,2)
pink
pink el 9 de Jun. de 2011
AX =[ 0 2.1213;
4.2426 2.1213;
4.2426 2.1213;
0 2.1213]
AY =[ 0 4000;
0 4000;
0 4000;
0 4000]
AZ =[-4.2426 -2.1213;
-4.2426 -2.1213;
0 -2.1213;
0 -2.1213]
AXD =[ 0 2.0900;
4.2426 2.0900;
4.2426 2.0900;
0 2.0900]
AYD =[ 0 3.6818;
0 3.6818;
0 3.6818;
0 3.6818]
AZD =[4.2426 2.1849;
4.2426 2.1849;
0 2.1849;
0 2.1849]

Iniciar sesión para comentar.

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by