⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run.m

📁 神经元信息传递的同步发放链matlab程序。此程序可以用来计算当神经元个数达到多少时
💻 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 + -