Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

The result can't shown as a graph in Gui Matlab

Asked by Kesni savitri on 15 May 2013

I have a trouble to get plot of my task. there is contain of 3 differential equation. i used GUI 'edit' to manage parameter a,and b

function model_openingFcn(hObject,eventdata,handles,umpan)
global a1; global a2; global b1; global b2;
a1=2;a2=4;b1=3;b2=5;
handles.typeFlag=1
set(handles.a_variations,'Value',1);
set(handles.b_2,'enable','off');
set(handles.a_1,'String',num2str(a1));
set(handles.a_2,'String',num2str(a2));
set(handles.b_1,'String',num2str(a1));
    guidata(hObject,handles)
%the diff eq to parameter a1
  function dydt=myfunc1(t,yp,a1,b1)
dydt=zeros(3,1)
dydt(1)=3*yp(1)*a1+yp(4)*b1;
dydt(2)=2*yp(3)*b1;
dydt(3)=yp(4)*a1;
          %the diff eq to parameter a1
          function dydt=myfunc2(t,yq,a2,b1)
          dydt=zeros(3,1)
          dydt(1)=3*yq(1)*a2+yq(4)*b1;
          dydt(2)=2*yq(3)*b1;
          dydt(3)=yq(4)*a2;
        %the diff eq to parameter a1
          function dydt=myfunc3(t,yr,a1,b2)
          dydt=zeros(3,1)
          dydt(1)=3*yr(1)*a1+y(4)*b2;
          dydt(2)=2*yr(3)*b2;
          dydt(3)=yr(4)*a1;
      %function callback for pushbutton
      guidata(hObject,handles);
      if handles.Flag=1
        set(handles.a_variations,'Value',1);
        set(handles.b_2,'enable','off');
        set(handles.a_1,'String',num2str(a1));
        set(handles.a_2,'String',num2str(a2));
        set(handles.b_1,'String',num2str(b1));
      else hanldes.Flag=2
        set(handles.b_variations,'Value',1);
        set(handles.a_2,'enable','off');
        set(handles.a_1,'String',num2str(a1));
        set(handles.b_2,'String',num2str(b2));
        set(handles.b_1,'String',num2str(b1));
      end
       dynamicmodel(handles);
      %>>>>>>>>>>>> make function to dynamicmodel(handles)
      function dynamicmodel(handles);
      switch handles.typeFlag
         case 1
      opts=odeset('Refine',10);
      [t,yp]=ode45(@myfunc1,[0 10],[1 3 4 5], opts,a1,b1);
      [t,yq]=ode45(@myfunc2,[0 10],[1 3 4 5], opts,a2,b1);
      plot(handles.axes1,t,yp(:,1),'b',t,yq(:,1),'m');
      title('effect variation parameter a to y1')
      xlabel('t')
      ylabel('y')
         case 2
      opts=odeset('Refine',10);
      [t,yp]=ode45(@myfunc1,[0 10],[1 3 4 5], opts,a1,b1);
      [t,yq]=ode45(@myfunc3,[0 10],[1 3 4 5], opts,a1,b2);
      plot(handles.axes1,t,yp(:,1),'b',t,yq(:,1),'m');
      title('effect variation parameter b to y1')
      xlabel('t')
      ylabel('y')

error result showed the graphic, in command window ??? Error using ==> plot Vectors must be the same lengths.

Error in ==> model>dynamicmodel 
           plot(handles.axes1,t,yp(:,1),'b',t,yq(:,1),'m');
Error in ==> model>btn_calculate_Callback at 158
modeldinamika(handles);
Error in ==> gui_mainfcn at 96
        feval(varargin{:});
Error in ==> model at 42
    gui_mainfcn(gui_State, varargin{:});
Error in ==> @(hObject,eventdata)model('btn_calculate_Callback ',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback

So what can i do to solve this error?

0 Comments

Kesni savitri

Products

1 Answer

Answer by Image Analyst on 15 May 2013

Put these lines just before the call to plot():

whos t
whos yp
whos yq

Evidently either yp or yq is not the same length as t.

0 Comments

Image Analyst

Contact us