【发布时间】:2023-02-02 17:50:38
【问题描述】:
我在运行尖峰神经元模拟器时遇到问题。我不断收到错误消息,“operation +: Warning adding a matrix with the empty matrix will give an empty matrix result.”现在我正在“Scilab”中编写这个程序,但我希望我遇到的问题对于受过教育的女警来说是清楚的。我所做的是将现有的 MATLAB 程序转换为 Scilab。可以在这里找到原始的 MATLAB 程序和解释:https://www.izhikevich.org/publications/spikes.pdf
在我的 Scilab 版本中,第一次通过循环会产生所有预期值。我知道这一点,因为我在第一次运行结束时按下暂停键,就在“结束”之前,然后检查所有值和矩阵元素。但是,如果我正确运行程序,其中包括一个 20 次迭代的循环,我会收到上面的错误消息,并且所有矩阵值都是空的!我不知道是什么问题。我对编程还很陌生,所以据我所知答案可能非常简单。这是该程序的 Scilab 版本:
Ne=8; Ni=2;
re=rand(Ne,1); ri=rand(Ni,1);
a=[0.02*ones(Ne,1); 0.02+0.08*ri];
b=[0.2*ones(Ne,1); 0.25-0.05*ri];
c=[-65+15*re.^2; -65*ones(Ni,1)];
d=[8-6*re.^2; 2*ones(Ni,1)];
S=[0.5*rand(Ne+Ni,Ne), -rand(Ne+Ni,Ni)];
v=60*rand(10,1)
v2=v
u=b.*v;
firings=[];
for t=1:20
I=[5*rand(Ne,1,"normal");2*rand(Ni,1,"normal")];
fired=find(v>=30);
j = length(fired);
h = t*ones(j,1);
k=[h,fired'];
firings=[firings;k];
v(fired)=c(fired);
u(fired)=u(fired)+d(fired);
I=I+sum(S(:,fired),"c");
v=v+0.5*(0.04*v.^2+5*v+140-u+I);
v=v+0.5*(0.04*v.^2+5*v+140-u+I);
u=u+a.*(b.*v-u);
end
plot(firings(:,1), firings(:,2),".");
我尝试了一切都无济于事。该程序应运行 20 次迭代,并生成代表在 20 个时间步长中的每个时间步长被激发的神经元的点的“光栅图”。
【问题讨论】:
标签: scilab