有一个类似的问题,给出了答案。我的问题和这个问题一样,除了我有两个循环而不是一个循环。不过,解决方案似乎对我没有用。
问题:How to hold a plot when using plot3 in matlab?
在这里,有一个循环广告解决方案似乎工作正常。以下是我的代码:
figure(1)
for i = 1:n
for j = 1:m
if(condition)
%some calculations to get X
x = X(1,:);
y = X(2,:);
z = X(3,:);
plot3(x,y,z,'.');
view(3);
hold on;
end
end
hold on;
end
这里,在使用'j'的内循环的所有迭代之后,我得到一个正确的图,但是一旦它进入外循环,图就会刷新并再次开始。如何保持两个循环的plot3?我在外循环中再次使用了hold,但它似乎仍然不起作用。任何人都可以告诉我如何保持2个循环的情节。提前谢谢。
答案 0 :(得分:3)
我认为您的代码应该按原样运行。但是,我会做一些改变,这应该有助于你遇到的任何问题:
hold on
只需要调用一次。view(3)
也只需要调用一次(实际上根本不需要绘制数据,只是有助于可视化)。axis tight
进行缩放轴限制的正确猜测。把它们放在一起,尝试一下,看看会发生什么:
%Set up figure to catch plots
figure(1);
hAxis = gca; %This will create an axis in the figure, and return its handle
hold on; %You can also use hold(hAxis,'on') if you are really paranoid about which axis is catching your commands
%Perform plots
for i = 1:n
for j = 1:m
if (condition)
%some calculations to get X
x = X(1,:);
y = X(2,:);
z = X(3,:);
plot3(hAxis,x,y,z,'.');
end
end
end
%Adjust view etc (experiment here after the data is plotted)
view(3)
axis tight