Как динамически отображать данные в MATLAB - PullRequest
0 голосов
/ 24 сентября 2018

У меня проблемы с построением данных динамически, моя цель - построить данные после проверки определенного 14-дневного теста. Если я войду в этот цикл условий, я хочу выполнить прямоугольник между 1-м и 14-м днями.когда я вхожу в последний цикл if, у меня уже есть xfist, xlast, y first y last.так что я могу нарисовать прямоугольник между ними.И затем, когда я снова прохожу 14-дневный тест, я хотел бы добавить к существующему графику еще один прямоугольник.

Вот мой код.

Линии сюжета ничего не изображают.

j=1;    
      while(j<72)
         boom=true;             
           if a13(j)~= b8(j)|| a13(j)>1.1*(b8(j))&& a13(j)<0.9*(b8(j))
           elseif a13(j)~=c5(j)|| a13(j)<0.9*(c5(j))&&a13(j)<0.9*(c5(j))
               boom=false;

           end
        Xfirst=[];
            Yfirst=[];
            Xlast=[];
            Ylast=[];
            Yfirst=a13(j);
            Xfirst=datetime(Date(j));           
          for i=j+1 :j+14 
            if a13(i)~= b8(i)|| a13(i)>1.1*(b8(i))&& a13(i)<0.9*(b8(i))
            elseif a13(i)~= c5(i) || a13(i)<0.9*(c5(i)) && a13(i)>1.1*(c5(j)) 
                 j=i;
                boom=false;
                break;
            end
          end
           if(boom==true)
                Ylast=a13(j+14);
                Xlast=New_Date(j+14);
                figure (1)
                plot(Xfirst,Yfirst)
                hold on
               plot(Xlast,Ylast)
           end 
           j=j+1;
      end

1 Ответ

0 голосов
/ 25 сентября 2018

использование drawnow внутри цикла:

j=1;


  while(j<72)
     boom=true;             
       if a13(j)~= b8(j)|| a13(j)>1.1*(b8(j))&& a13(j)<0.9*(b8(j))
       elseif a13(j)~=c5(j)|| a13(j)<0.9*(c5(j))&&a13(j)<0.9*(c5(j))
           boom=false;

       end
    Xfirst=[];
        Yfirst=[];
        Xlast=[];
        Ylast=[];
        Yfirst=a13(j);
        Xfirst=datetime(Date(j));           
      for i=j+1 :j+14 
        if a13(i)~= b8(i)|| a13(i)>1.1*(b8(i))&& a13(i)<0.9*(b8(i))
        elseif a13(i)~= c5(i) || a13(i)<0.9*(c5(i)) && a13(i)>1.1*(c5(j)) 
             j=i;
            boom=false;
            break;
        end
      end
       if(boom==true)
            Ylast=a13(j+14);
            Xlast=New_Date(j+14);
            figure (1)
            plot(Xfirst,Yfirst)
            hold on
           plot(Xlast,Ylast)
           drawnow; % To force figure to update
           pause(0.2); % to allow time for it to render
          end 
       j=j+1;
  end

drawnow обновляет цифры и обрабатывает все ожидающие обратные вызовы.Используйте эту команду, если вы изменяете графические объекты и хотите немедленно увидеть обновления на экране.

...