所以,我有个奇怪的问题。下面是我的代码,它是一个简单的Euler方法,用于集成一个线性ODE系统。
function [V, h, n, b, z] = hodgkin_huxley_CA1(t, Iapp, t_app)
%function based on the CA1 pyramidal neuron model:
h = zeros(length(t));
n = zeros(length(t));
b = zeros(length(t));
z = zeros(length(t));
V = zeros(length(t));
% Initial conditions
h(1) = 0.9771;
n(1) = 0.0259;
b(1) = 0.1787;
z(1) = 8.0222e-04;
V(1) = -71.2856;
% Euler method
delta_t = t(2) - t(1);
for i=1:(length(t)-1)
h(i+1) = h(i) + delta_t*feval(@h_prime,V(i),h(i));
n(i+1) = n(i) + delta_t*feval(@n_prime,V(i),n(i));
b(i+1) = b(i) + delta_t*feval(@b_prime,V(i),b(i));
z(i+1) = z(i) + delta_t*feval(@z_prime,V(i),z(i));
minf = m_inf(V(i));
pinf = p_inf(V(i));
ainf = a_inf(V(i));
if (t(i) >= t_app(1) && t(i) <= t_app(2))
I = Iapp;
else I = 0;
end;
V(i+1) = V(i) + delta_t*feval(@V_prime,V(i),h(i),n(i),b(i),z(i),minf,pinf,ainf,I);
end;这个函数返回5个数组,V,h,n,b和z,问题是,如果我使用V(1),V(2),V(3),……,我得到了预期的结果。但是,当我告诉matlab打印整个数组时,我接收到所有的值为0。所以,如果我绘制这个数组,我会得到2条曲线:一条是对的,一条是零。

请注意,这也发生在所有其他变量h,n,b和z上,有人知道会发生什么吗?
发布于 2014-07-17 19:22:11
您的输出应该是向量,但是您正在将它们初始化为方阵。
您可以简单地替换:
h = zeros(length(t));
n = zeros(length(t));
b = zeros(length(t));
z = zeros(length(t));
V = zeros(length(t));使用
h = zeros(length(t),1);
n = zeros(length(t),1);
b = zeros(length(t),1);
z = zeros(length(t),1);
V = zeros(length(t),1);使用1输入的zeros函数创建该维的二维方阵。对于两个或多个输入,它将输入解释为所有维度的规范。例如:
>> x = zeros(3)
x =
0 0 0
0 0 0
0 0 0
>> x = zeros(3,1)
x =
0
0
0https://stackoverflow.com/questions/24811703
复制相似问题