[繪圖] 座標不能改

看板MATLAB作者 (哲平)時間12年前 (2012/07/13 23:05), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
請幫我看看問題是什麼, 在subplot(2,2,2)的部分 這程式碼很長 請多包涵XDDD _____________________________________________________________________________ function[]=izhikevich(varargin) if nargin > 0 eval(varargin{1}); %execute the argument else main; end; %-------------------------------- function[]=main global mode modeold pauseflag drawnull thresh quitflag global a b c d e I v u VU L L = 500; pauseflag=-1; mode = 'A'; modeold=['0']; drawnull=1; quitflag=0; pars=[0.02 0.2 1 8 0.1 8 ;... 0.02 0.2 1 8 0.1 0.1 ;... 0.02 0.2 1 2 0.1 8 ;... 0.02 0.2 1 0.3 0.1 0.1 ;... 0.02 0.2 1 4 0.1 10 ;... 0.01 0.2 1 12 0.1 30 ;... 0.01 -0.1 1 6 0.1 0 ;... 0.2 0.2 1 5 0.1 0 ;... 0.01 -0.5 1 8 0.1 0.001 ;... 0.05 0.26 1 4 0.1 2 ;... 0.03 0.2 1 4 0.1 0.06 ;... 0.01 0.25 1 4 0.1 0.6 ;... 0.03 0.25 1 4 0.1 -15;... 0.03 0.25 1 0.1 0.1 -15;... 0.03 -0.25 1 4 0.1 0.5 ;... 0.1 0.26 -5 0 0.1 0.0061 ;... 0.03 0.2 0.8 6 0.1 5 ;... 0.02 1 1 8 0.1 0 ;... -0.02 -0.2 1 8 0.1 -4 ;... -0.02 -0.2 1 1 0.1 -4]; a=pars(1,1); b=pars(1,2); c=pars(1,3); d=pars(1,4); e=pars(1,5); I=pars(1,6); figNumber = figure(1); clf; set(figNumber,'NumberTitle','off','doublebuffer','on',... 'Name','Simple Model by Izhikevich (2003)',... 'Units','normalized','toolbar','figure',... 'Position',[0.05 0.1 0.9 0.8]); h1=subplot(4,2,1); set(h1,'Position',[0.05 0.75 0.27 0.2]) vtrace=line('color','k','LineStyle','-','erase','background','xdata',[],'ydata' ,[],'zdata',[]); axis([0 100 -10 30]) title('membrane potential, v') xlabel('time (ms)'); h2=subplot(4,2,3); set(h2,'Position',[0.05 0.5 0.27 0.15]) utrace=line('color','k','LineStyle','-','erase','background','xdata',[],'ydata' ,[],'zdata',[]); axis([0 100 -10 30]) title('recovery variable, u') xlabel('time (ms)') h3=subplot(2,2,2); set(h3,'Position',[0.4 0.5 0.55 0.45]) head = line('color','r','Marker','.','markersize',20,'erase','xor','xdata',[], 'ydata',[],'zdata',[]); tail=line('color','k','LineStyle','-','erase','xor','xdata',[],'ydata',[], 'zdata',[]); vnull=line('color','b','LineStyle','-','erase','xor','xdata',[],'ydata',[], 'zdata',[]); unull=line('color','r','LineStyle','-','erase','xor','xdata',[],'ydata',[], 'zdata',[]); cnull=line('color','g','LineStyle',':','erase','xor','xdata',[],'ydata',[], 'zdata',[]); %thresh=line('color','r','LineStyle','-','erase','xor','xdata',[],'ydata',[], 'zdata',[]); axis([-4 12 -6 20]); <<<<< *******這邊不管我怎麼改垂直軸的座標 title('phase portrait') 永遠是-40多~60左右.... xlabel('v');ylabel('u'); 上面兩個圖就沒有這種問題 if exist('izhikevich.jpg') h=subplot(2,2,3); set(h,'Position',[0.05 0.05 0.2 0.37]) fig1=imread('izhikevich.jpg'); B=gray; mind=20; B(1:mind,:)=B(1:mind,:)/B(mind,1); colormap(1-B); imagesc(fig1); axis off; else uicontrol('Style','frame', 'Units','normalized', ... 'Position',[0.04 0.05 0.22 0.37]); disp(['Cannot find figure file <izhikevich.jpg>' 7]); uicontrol('Style','text', 'Units','normalized', 'HorizontalAlignment' ,'center',... 'Position',[0.05 0.28 0.17 0.02],'string',{'download picture izhikevich.jpg'}); uicontrol('Style','text', 'Units','normalized', 'HorizontalAlignment' ,'center',... 'Position',[0.05 0.21 0.17 0.02],'string',{'or see Fig.1 in Izhikevich (2004)'}); end uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+0*0.2/4 0.09+4*0.37/5 0.02 0.025],... 'String','A','Callback','global mode; mode=''A'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+1*0.2/4 0.09+4*0.37/5 0.02 0.025],... 'String','B','Callback','global mode; mode=''B'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+2*0.2/4 0.09+4*0.37/5 0.02 0.025],... 'String','C','Callback','global mode; mode=''C'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+3*0.2/4 0.09+4*0.37/5 0.02 0.025],... 'String','D','Callback','global mode; mode=''D'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+0*0.2/4 0.09+3*0.37/5 0.02 0.025],... 'String','E','Callback','global mode; mode=''E'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+1*0.2/4 0.09+3*0.37/5 0.02 0.025],... 'String','F','Callback','global mode; mode=''F'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+2*0.2/4 0.09+3*0.37/5 0.02 0.025],... 'String','G','Callback','global mode; mode=''G'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+3*0.2/4 0.09+3*0.37/5 0.02 0.025],... 'String','H','Callback','global mode; mode=''H'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+0*0.2/4 0.09+2*0.37/5 0.02 0.025],... 'String','I','Callback','global mode; mode=''I'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+1*0.2/4 0.09+2*0.37/5 0.02 0.025],... 'String','J','Callback','global mode; mode=''J'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+2*0.2/4 0.09+2*0.37/5 0.02 0.025],... 'String','K','Callback','global mode; mode=''K'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+3*0.2/4 0.09+2*0.37/5 0.02 0.025],... 'String','L','Callback','global mode; mode=''L'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+0*0.2/4 0.09+1*0.37/5 0.02 0.025],... 'String','M','Callback','global mode; mode=''M'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+1*0.2/4 0.09+1*0.37/5 0.02 0.025],... 'String','N','Callback','global mode; mode=''N'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+2*0.2/4 0.09+1*0.37/5 0.02 0.025],... 'String','O','Callback','global mode; mode=''O'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+3*0.2/4 0.09+1*0.37/5 0.02 0.025],... 'String','P','Callback','global mode; mode=''P'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+0*0.2/4 0.09+0*0.37/5 0.02 0.025],... 'String','Q','Callback','global mode; mode=''Q'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+1*0.2/4 0.09+0*0.37/5 0.02 0.025],... 'String','R','Callback','global mode; mode=''R'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+2*0.2/4 0.09+0*0.37/5 0.02 0.025],... 'String','S','Callback','global mode; mode=''S'';'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.05+3*0.2/4 0.09+0*0.37/5 0.02 0.025],... 'String','T','Callback','global mode; mode=''T'';'); uicontrol('Style','frame', 'Units','normalized', ... 'Position',[0.27 0.05 0.12 0.37]); uicontrol('Style','text', 'Units','normalized', 'HorizontalAlignment','left' ,... 'tag','parameters','Position',[0.29 0.38 0.07 0.03],'string' ,'parameters:'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.35 0.03 0.03],'string','a='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.35 0.05 0.03],... 'string',num2str(a),'tag','a','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.31 0.03 0.03],'string','b='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.31 0.05 0.03],... 'string',num2str(b),'tag','b','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.27 0.03 0.03],'string','c='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.27 0.05 0.03],... 'string',num2str(c),'tag','c','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.23 0.03 0.03],'string','d='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.23 0.05 0.03],... 'string',num2str(d),'tag','d','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.19 0.03 0.03],'string','e='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.19 0.05 0.03],... 'string',num2str(e),'tag','e','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.15 0.03 0.03],'string','I='); uicontrol('Style','edit', 'Units','normalized', ... 'Position',[0.31 0.15 0.05 0.03],... 'string',num2str(I),'tag','I','Callback','izhikevich (''changepars'')'); uicontrol('Style','text', 'Units','normalized', ... 'Position',[0.28 0.11 0.05 0.03],... 'String','current'); uicontrol('Style','radio', 'Units','normalized', ... 'Position',[0.33 0.11 0.03 0.03],... 'tag','current','value',0,'callback','global drawnull;drawnull=1;'); uicontrol('Style','frame', 'Units','normalized', ... 'Position',[0.4 0.25 0.16 0.17]); uicontrol('Style','text', 'Units','normalized', 'HorizontalAlignment','left' ,... 'Position',[0.41 0.26 0.14 0.15],'string',{'simple model:' ;'v''=0.04v^2+evu-u+I';'u''=a(bv-u)';'' ;'if v=+30 mV (peak of AP)';'then v=c, u=u+d'}); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.4 0.19 0.1 0.05],... 'String','excitatory pulse','Callback','global v; v=v+10;'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.4 0.12 0.1 0.05],... 'String','inhibitory pulse','Callback','global v; v=v-10;'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.4 0.05 0.1 0.05],... 'String','initial point','Callback','global u v L VU; ic=ginput(1) ;v=ic(1);u=ic(2);VU = [v;u]*ones(1,L);'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.57 0.37 0.1 0.05],... 'tag','threshold','String','show threshold','Callback' ,'izhikevich(''showthreshold'')'); uicontrol('Style','frame', 'Units','normalized', ... 'Position',[0.52 0.12 0.31 0.05]); uicontrol('Style','text', 'Units','normalized',... 'Position',[0.525 0.145 0.3 0.02],'string','input current'); uicontrol('Style','text', 'Units','normalized','HorizontalAlignment','left' ,... 'Position',[0.525 0.145 0.05 0.02],'string','-100'); uicontrol('Style','text', 'Units','normalized','HorizontalAlignment' ,'right',... 'Position',[0.775 0.145 0.05 0.02],'string','+100'); uicontrol('Style','slider', 'Units','normalized', ... 'Position',[0.525 0.125 0.3 0.015],... 'min',-100,'max',100,... 'value',I, 'tag','inputcurrent','callback','izhikevich (''changepars(1)'')'); uicontrol('Style','frame', 'Units','normalized', ... 'Position',[0.52 0.05 0.31 0.05]); uicontrol('Style','text', 'Units','normalized',... 'Position',[0.525 0.075 0.3 0.02],'string','visualization speed'); uicontrol('Style','slider', 'Units','normalized', ... 'Position',[0.525 0.055 0.3 0.015],... 'value',0.0, 'tag','speed'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.85 0.12 0.1 0.05],... 'String','pause','tag','pause','Callback','global pauseflag ;pauseflag=-pauseflag;'); uicontrol('Style','pushbutton', 'Units','normalized', ... 'Position',[0.85 0.05 0.1 0.05],... 'String','quit','Callback','global quitflag;quitflag=1;'); v=-70; u=-20; VU = [v;u]*ones(1,L); tau = 0.2; t=0; % The main loop while quitflag==0 pause(0.1*get(findobj('tag','speed'),'value')^1); p=findobj('tag','pause'); while pauseflag>0 pause(0);drawnow; %needed to overcome MATLAB7 bug (found by Gerardo Lafferriere) set(p,'string','resume'); end; set(p,'string','pause'); if modeold ~= mode set(findobj('tag','parameters'),'string',['parameters: ' mode]); m=find('ABCDEFGHIJKLMNOPQRST'==mode); a=pars(m,1);set(findobj('tag','a'),'string',num2str(a)); b=pars(m,2);set(findobj('tag','b'),'string',num2str(b)); c=pars(m,3);set(findobj('tag','c'),'string',num2str(c)); d=pars(m,4);set(findobj('tag','d'),'string',num2str(d)); e=pars(m,5);set(findobj('tag','d'),'string',num2str(e)); I=pars(m,6);set(findobj('tag','I'),'string',num2str(I)); set(findobj('tag','inputcurrent'),'value',max(-100,min(100,I))); set(findobj('tag','current'),'value',0); modeold=mode; drawnull=1; set(h3, 'ylim', -b*62+[-30 70]) set(h2, 'ylim', -b*62+[-30 70]) end; if drawnull>0 drawnull=0; vv=-100:0.01:100;uu=-100:0.01:100; set(vnull,'xdata',vv,'ydata',vv.^2+e*vv.*uu-uu+I*get(findobj('tag' ,'current'),'value')); vv=[-100 100]; set(unull,'xdata',[-100 100],'ydata',b*[-100 100]); set(cnull,'xdata',[c c],'ydata',[-200 200]); drawnow; end; t=t+tau; v=v+tau*(v^2+e*v*u-u+I*get(findobj('tag','current'),'value')); u=u+tau*a*(b*v-u); if v>30 v=c; u=u+d; VU(1,1)=31; end; VU = [[v;u],VU(:,1:L-1)]; VVU=VU; VVU(1,find(VU(1,:)>30))=NaN; set(vtrace,'xdata',tau*(L:-1:1),'ydata',VU(1,:)); set(utrace,'xdata',tau*(L:-1:1),'ydata',VU(2,:)); set(head,'xdata',VU(1,1),'ydata',VU(2,1)) set(tail,'xdata',VVU(1,1:50),'ydata',VVU(2,1:50)) drawnow; %needed to overcome MATLAB7 bug (found by Gerardo Lafferriere) end; %----------------------------------- function changepars(inpcur) global a b c d e I drawnull drawnull = 1; obj=findobj('tag','a'); nv=str2num(get(obj,'string')); if isempty(nv) nv=a; end; a=nv; set(obj,'string',num2str(nv)); obj=findobj('tag','b'); nv=str2num(get(obj,'string')); if isempty(nv) nv=b; end; b=nv; set(obj,'string',num2str(nv)); obj=findobj('tag','c'); nv=str2num(get(obj,'string')); if isempty(nv) nv=c; end; c=nv; set(obj,'string',num2str(nv)); obj=findobj('tag','d'); nv=str2num(get(obj,'string')); if isempty(nv) nv=d; end; d=nv; set(obj,'string',num2str(nv)); obj=findobj('tag','e'); nv=str2num(get(obj,'string')); if isempty(nv) nv=e; end; e=nv; set(obj,'string',num2str(nv)); if nargin <1 obj=findobj('tag','I'); nv=str2num(get(obj,'string')); if isempty(nv) nv=I; end; I=max(-100,min(100,nv)); set(obj,'string',num2str(I)); set(findobj('tag','inputcurrent'),'value',I); else I = get(findobj('tag','inputcurrent'),'value'); set(findobj('tag','I'),'string',num2str(I)); end; 這不是我寫的 我修改的部分只是參數添加 更改初始參數和微分方程式 而且我只是剛學習 XD 找了很久找不出原因 不好意思我不會上色XDDDD 眼睛痛請包涵 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.35.71

07/13 23:19, , 1F
error message?
07/13 23:19, 1F

07/13 23:34, , 2F
沒有出現error message
07/13 23:34, 2F
文章代碼(AID): #1G03aWjJ (MATLAB)