[繪圖] 座標不能改
請幫我看看問題是什麼,
在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
07/13 23:19, 1F
→
07/13 23:34, , 2F
07/13 23:34, 2F