我是matlab的初学者并尝试解决这个问题。但到目前为止还没有成功。我花了很长时间,我想我需要一些帮助。我很感激任何帮助!!!
我需要在相位空间中对v和w的时间和轨迹进行绘制。整个问题如下,我之前关于这个问题的问题的代码也在下面。我可以使用子图(2,1,1)作为下一个图的第一个图和子图(2,1,2)。但我不确定除此之外我还要做什么。我找到了ode45命令。但不知道如何使用它,以及它是否适合在这里使用。我试过用ode45。但它显示了许多我不理解的错误.....请帮助我。非常感谢!
'使用子图创建一个包含两个图的图。在第一张图中,绘制了膜电位v(t)随时间t的时间演变。在第二张图中,绘制(所谓的)相空间中的相应轨迹(v(t); w(t))。
% my code is below.
a=0.08;
b=3.6;
c=0.7;
T=2; % this can be any number
I_ext=20; % this can be any number
dt=0.01; % this can be any number
function [ v,w ] = fhnn( a,b,c,I_ext,T,dt)
v=zeros(1,numel(T/dt));
w=zeros(1,numel(T/dt));
for n=1:numel(T/dt)
v(n+1)=(v(n)-v(n)^3/3-w(n)+I_ext)*dt+v(n);
w(n+1)=a*(v(n)-b*w(n)+c)*dt+w(n);
end
答案 0 :(得分:0)
我认为你有一个微分方程,并试图直接绘制它。如果可能的话,您可能会发现更好的方法是实际求解方程式。
无论哪种方式,都认识到:
numel
返回数组的长度,dT/dt
始终是标量,因此长度始终为1。fhnn
。t
。如果for
循环中的内容正确无误,则以下内容应该有效:
a=0.08; b=3.6; c=0.7; T=2; I_ext=20; dt=0.01;
t = 0:dt:T;
v = zeros(1,round(T/dt));
w = zeros(1,round(T/dt));
for n=1:round(T/dt)-1
v(n+1)=(v(n)-v(n)^3/3-w(n)+I_ext)*dt+v(n);
w(n+1)=a*(v(n)-b*w(n)+c)*dt+w(n);
end
subplot(2,1,1)
plot(t,v)
xlabel('t')
ylabel('v')
subplot(2,1,2)
plot(v,w)
xlabel('v')
ylabel('w')