📄 run.m
字号:
function run(w)
%w=200; %神经元的个数
layer=10; %chain的层数
taum=10; %时间常数
taur=15; %相对不应期时间常数
T=0.1; %每一步长为0.1ms
alpha=3.07; %alpha常数
ei=0.88; %兴奋性和抑制性神经元的概率:88%和12%
time=100; %给定时间段5000ms
time=time./T;taum=taum./T;taur=taur./T; %换算步长
psc=ones(1,900);rp=ones(1,900);h=1;
for t=0:0.1:89.9
psc(h) =0.15*t.*exp(-1*alpha*t);rp(h)=1-exp(-t*10/taur);h=h+1;
end %计算psc和相对不应期变化系数
ep=time/10000.*2*20000*ei; %兴奋性神经元的个数
ip=time/10000.*12*20000*(1-ei); %抑制性神经元的个数
result=zeros(w,300,layer); %定义一个数组来保存每组神经元的发放情况
for g=1:layer
for f=1:w
v=zeros(1,(time+1800)); %生成一个V数组
if g > 1
i=1;temp0=[];
while i<= w
for s=1:300
if result(i,s,(g-1))>2
temp0=[temp0,result(i,s,(g-1))];
end
end
i=i+1;
end
for m=1:length(temp0)
for k=1:900
v(temp0(m)+k)=v(temp0(m)+k)+psc(k);
end
end
end
loc= fix(rand(1,fix(ip))*time); %随机生成ip个数
for j=1:ip
for k=1:900
v(loc(j)+k)=v(loc(j)+k)-psc(k);
end
end %对神经元加抑制性spike
loc= fix(rand(1,fix(ep))*time); %随机生成ep个数
for j=1:ep
for k=1:900
v(loc(j)+k)=v(loc(j)+k)+psc(k);
end
end %对神经元加兴奋性spike
v(1)=0;i=2;
while i < time
v(i)=v(i-1).*exp(-1/taum)+v(i); %使用预先计算的PSP,线性叠加,以降低运算成本
if v(i)>=15 %达到发放条件
v(i:(i+9))=0;v(i:(i+899))=v(i:(i+899)).*rp;
v(i)=70;
i=i+10;
else
i=i+1;
end
end
temp=find(v>60);
%for i=1:length(temp)
result(f,1:length(temp),g)=temp;
%end
if g==1
result(f,(length(temp)+1),g)=100;
end
% res=[res,result(:,f,g);
end
end
res=zeros(w*layer,time);
for g=1:layer
for f=1:w
for j=1:300
res((g*w+f),(result(f,j,g)+1))=200;
%res(result(:,f,g),(g-1)*w+f)=200
end
end
end
imwrite(res,'NetWork.tif');
% plot(result0(:,:,:));
%for n=0:time-1
%plot(v(1:time));
%hold on;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -