for i=1:size(v_pre{neuron_number},2) v_connections(:,i) = (y_1 - E(i,1)).* exp(-time.*[(g_l(1,1)./c_m(1,1)) + [W(i)*1./(exp(-sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1)]/c_m(1,1)]).*(1./(exp(sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1).^W(i))+E(i); %v_connections(:,i) = (y_1 - E(i,1)).* exp(-time.*[(g_l(1,1)./c_m(1,1))]).*(1./(exp(sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1).^W(i))+E(i); v_final = v_connections_pre + v_connections(:,i); v_connections_pre = v_final; end
时间: 2023-10-09 15:07:45 浏览: 37
这是神经元模拟的另一部分,用于计算神经元之间的电压连接。该部分的核心思想是,通过计算神经元之间的电流和电阻来模拟神经元之间的电压变化。具体来说,该部分代码通过循环计算每个预先记录电压信号中的神经元,利用该神经元的连接权重 W、激活函数参数 sigma、mu、电导 g_l、电压阈值 v_l、膜电容 c_m、静息电位 E 等参数,计算出该神经元与其他神经元之间的电流和电阻,并通过指数函数和 sigmoid 函数计算出对应的电压连接 v_connections。其中,exp 函数代表自然指数函数,./ 表示矩阵中对应元素相除,* 表示矩阵乘法,.^ 表示矩阵中对应元素的乘方。这一部分的计算涉及到了电学和神经科学的基本知识,需要一定的理论基础。
相关问题
function [v_final]=Closed_form_solution_neuron(neuron_number,v_pre,delta_t,y_init,g_l,v_l,c_m,sigma,mu,W,E) y_1 = y_init; %[v_pre_resampled time_ref]= resample(v_pre,[1:size(v_pre,1)],1/delta_t); time = 0:delta_t:(size(v_pre{neuron_number},1)*delta_t)-delta_t; time = time'; v_connections_pre = zeros(size(v_pre{neuron_number},1),1); %tau = (y_1 - sum(E)).*exp(-time'.*[(g_l(1,1)./c_m(1,1)) + sum([W.*1./(exp(-sigma.*(v_pre{neuron_number}'-mu))+1)],1)./c_m(1,1)]); %v_final = tau.*sum(1./(exp(sigma.*(v_pre{neuron_number}'-mu))+1).^W,1)+sum(v_l(1,1)+E); for i=1:size(v_pre{neuron_number},2) v_connections(:,i) = (y_1 - E(i,1)).* exp(-time.*[(g_l(1,1)./c_m(1,1)) + [W(i)*1./(exp(-sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1)]/c_m(1,1)]).*(1./(exp(sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1).^W(i))+E(i); %v_connections(:,i) = (y_1 - E(i,1)).* exp(-time.*[(g_l(1,1)./c_m(1,1))]).*(1./(exp(sigma(i,1).*(v_pre{neuron_number}(:,i)-mu(i,1)))+1).^W(i))+E(i); v_final = v_connections_pre + v_connections(:,i); v_connections_pre = v_final; end %v_final = v_final + v_l(1,1); clear g_l v_l c_m sigma mu W E time v_connections
这段代码实现了一个神经元模型的闭合解析解法,输入参数包括预先记录的外部电压v_pre,时间间隔delta_t,初始状态y_init,以及神经元模型的参数g_l, v_l, c_m, sigma, mu, W和E。其中,g_l是静息电导,v_l是静息电位,c_m是膜电容,sigma和mu是激活函数的参数,W是突触权值矩阵,E是突触电位。该代码通过解析求解微分方程,计算出神经元的动态响应v_final,并返回结果。其中,v_connections表示每个突触的动态响应,v_connections_pre表示上一个突触的动态响应,通过循环累加每个突触的动态响应得到最终结果v_final。
function [synapse_values,neuron_values,v_pre]= presynaptic_neurons_parameter(neuron_num,synapse_param_inter,synapse_param_sensory,neuron_param,neurons,sensory) % select presynaptic neurons and their parameter for a particular neuron: synapse_param_inter = [synapse_param_inter;synapse_param_sensory]; synapse_param_inter(35:end,1) = synapse_param_inter(35:end,1) + 19; neurons = [neurons,sensory]; neuron_param = [neuron_param;zeros(size(sensory,2),3)]; for i= 1:size(synapse_param_inter,1) if synapse_param_inter(i,2) == neuron_num synapse_param{i,1} = synapse_param_inter(i,3:6); end end synapse_param_new = synapse_param(~cellfun(@isempty, synapse_param)); synapse_param_indexes = find(~cellfun(@isempty,synapse_param)); value = synapse_param_new; index = synapse_param_indexes; neuron_values{1} = neuron_param(neuron_num+1,:); for i= 1:(size(index,1)) x = synapse_param_inter(index(i),1); v_pre{i} = neurons(:,x+1); neuron_values{i+1,1} = neuron_param(x+1,:); end v_pre = cell2mat(v_pre); synapse_values = cell2mat(value); neuron_values = cell2mat(neuron_values);
这段代码实现了一个函数,用于选择神经元的突触和参数。输入参数包括神经元的编号neuron_num、国际突触参数synapse_param_inter、感觉突触参数synapse_param_sensory、神经元参数neuron_param、所有神经元的外部电压记录neurons和感觉神经元的外部电压记录sensory。其中,synapse_param_inter是一个包含国际突触参数的矩阵,synapse_param_sensory是一个包含感觉突触参数的矩阵,neuron_param是神经元参数的矩阵,neurons是所有神经元的外部电压记录的矩阵,sensory是感觉神经元的外部电压记录的矩阵。该函数首先将国际突触参数和感觉突触参数合并到synapse_param_inter中,并将感觉神经元的编号加上所有神经元的数量,以便于后续处理。然后,该函数根据神经元的编号从synapse_param_inter中选择对应神经元的突触参数,将其存储到synapse_param中。接着,该函数将synapse_param中的非空数据提取出来,存储到value中,并记录其对应的索引到index中。然后,该函数循环遍历每个突触,选择对应的外部电压记录,并将神经元的参数存储到neuron_values中。最后,该函数将所有选中的外部电压记录和突触参数存储到synapse_values中。