情节持有plot3 matlab

时间:2013-12-02 18:48:44

标签: matlab plot

有一个类似的问题,给出了答案。我的问题和这个问题一样,除了我有两个循环而不是一个循环。不过,解决方案似乎对我没有用。

问题: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个循环的情节。提前谢谢。

1 个答案:

答案 0 :(得分:3)

我认为您的代码应该按原样运行。但是,我会做一些改变,这应该有助于你遇到的任何问题:

  1. hold on只需要调用一次。
  2. view(3)也只需要调用一次(实际上根本不需要绘制数据,只是有助于可视化)。
  3. 当我执行复杂的绘图时,我通常需要明确指定要绘制的轴。否则,绘图将转到“当前”轴,可以通过某些操作进行更改。 (取决于你在计算中做了什么。)
  4. 当数据未添加到绘图中时,常见的问题是轴缩放。您可以使用axis tight进行缩放轴限制的正确猜测。
  5. 把它们放在一起,尝试一下,看看会发生什么:

    %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