MATLAB两个不同的数组用于同一个变量

时间:2014-07-17 19:16:18

标签: arrays matlab

所以,我遇到了一个奇怪的问题。 下面是我的代码,它是一个简单的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条曲线:一条是正确的,一条是零。 as you can see from the graph 请注意,所有其他变量h,n,b和z也会发生这种情况。 谁知道可能会发生什么?

1 个答案:

答案 0 :(得分:1)

您的输出是矢量,但是您将它们初始化为方形矩阵。

您可以简单地替换:

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函数创建该维度的2D方阵。通过两个或多个输入,它将输入解释为所有尺寸的规格。例如:

>> x = zeros(3)
x =
     0     0     0
     0     0     0
     0     0     0
>> x = zeros(3,1)
x =
     0
     0
     0