Arrays MATLAB针对同一变量使用两种不同的数组

Arrays MATLAB针对同一变量使用两种不同的数组,arrays,matlab,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

所以,我遇到了一个奇怪的问题。 下面是我的代码,这是一个简单的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;
函数[V,h,n,b,z]=hodgkin\u huxley\u CA1(t,Iapp,t\u app)
%基于CA1锥体神经元模型的功能:
h=零(长度(t));
n=零(长度(t));
b=零(长度(t));
z=零(长度(t));
V=零(长度(t));
%初始条件
h(1)=0.9771;
n(1)=0.0259;
b(1)=0.1787;
z(1)=8.0222e-04;
V(1)=-71.2856;
%欧拉法
δt=t(2)-t(1);
对于i=1:(长度(t)-1)
h(i+1)=h(i)+delta_t*feval(@h_素数,V(i),h(i));
n(i+1)=n(i)+delta_t*feval(@n_素数,V(i),n(i));
b(i+1)=b(i)+delta_t*feval(@b_素数,V(i),b(i));
z(i+1)=z(i)+delta_t*feval(@z_素数,V(i),z(i));
minf=m_inf(V(i));
pinf=p_inf(V(i));
ainf=a_inf(V(i));

如果(t(i)>=t_app(1)&&t(i)您的输出是向量,但是您将它们初始化为平方矩阵

您可以简单地替换:

h = zeros(length(t));
n = zeros(length(t));
b = zeros(length(t));
z = zeros(length(t));
V = zeros(length(t));

zeros
函数使用1个输入创建该维度的二维方阵。使用两个或多个输入,它将输入解释为所有维度的规格。例如:

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

输出应该是矩阵还是向量?它们应该是向量
numel
length
更好。它成功了!谢谢你的回复,我不知道这个符号。
>> x = zeros(3)
x =
     0     0     0
     0     0     0
     0     0     0
>> x = zeros(3,1)
x =
     0
     0
     0