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

📄 if_gui.m

📁 ifnn
💻 M
📖 第 1 页 / 共 4 页
字号:
        draw_SNR(tf/1000,t/1000,stimulus.param2,sigma,cumulative); 
    end;
    if(drawpower)
        if(membrane.type == 2) omega = membrane.C; else omega = stimulus.param2; end;
        draw_power(tf/1000,t/1000,omega,cumulative); 
    end;
end;


function y = Iext_step(t,stimulus)
y = (t>stimulus.param3)*(t<stimulus.param3+stimulus.param2)*stimulus.param1;

function y = Iext_sine(t,stimulus)
y = stimulus.param3 + stimulus.param1*sin(2*pi*stimulus.param2*t/1000);

function y = Iext_uspike(t,stimulus,dt,C)
%y = -stimulus.param1*log(rand(1))/stimulus.param2 + stimulus.param1*log(rand(1))/stimulus.param2/2 ;
y = C*(stimulus.param1*poissrnd(dt*stimulus.param2) - stimulus.param3*poissrnd(dt*stimulus.param4));
y = y/dt;

function y = FIF(v,tau,C,Iext_func,t,varargin)
y = -v/tau + feval(Iext_func,t,varargin{:})/C;
% --------------------------------------------------------------------

% --------------------------------------------------------------------
function varargout = getparams(handles)
sim = struct('dt', str2num(get(handles.simparam1,'string')), 'duration', str2num(get(handles.simparam2,'string')));
noise = struct('dnoise',get(handles.noiseparam3_check,'value'), 'damp', str2num(get(handles.noiseparam3,'string')),...
                'tnoise',get(handles.noiseparam1_check,'value'), 'tamp', str2num(get(handles.noiseparam1,'string')),...
                'rnoise',get(handles.noiseparam2_check,'value'), 'ramp', str2num(get(handles.noiseparam2,'string')),...
                'enoise',get(handles.noiseparam4_check,'value'), 'eamp', str2num(get(handles.noiseparam4,'string')));
stimtype = get(handles.popup_stimulus,'value');
if((stimtype==1)|(stimtype==2))
    stimulus = struct('type',stimtype,...
            'param1', str2num(get(handles.param1,'string')),...
            'param2', str2num(get(handles.param2,'string')),...
            'param3', str2num(get(handles.param3,'string')));
elseif((stimtype==3))
    stimulus = struct('type',stimtype,...
            'param1', str2num(get(handles.param1,'string')),...
            'param2', str2num(get(handles.param2,'string')),...
            'param3', str2num(get(handles.param3,'string')),...
            'param4', str2num(get(handles.param4,'string')),...
            'dt',str2num(get(handles.simparam1,'string')));
end;    
model = get(handles.popup_model,'value');
if((model == 1) | (model == 2))
membrane = struct('type',model,...
                'R',str2num(get(handles.modelparam2,'string')),...
                'C',str2num(get(handles.modelparam1,'string')),...
                'vth',str2num(get(handles.modelparam3,'string')),...
                'vr',str2num(get(handles.modelparam5,'string')),...
                'trefr',str2num(get(handles.modelparam4,'string')));
end;         

state = get(handles.vshow_spikes,'checked');
if(strcmp(state,'on')) showspikes(1) = 1; else showspikes(1) = 0; end;
state = get(handles.cshow_spikes,'checked');
if(strcmp(state,'on')) showspikes(2) = 1; else showspikes(2) = 0; end;

state = get(handles.ISI_on,'checked');
if(strcmp(state,'on')) drawISI = 1; else drawISI = 0; end;

state = get(handles.draw_survivor,'checked');
if(strcmp(state,'on')) drawS = 1; else drawS = 0; end;

state = get(handles.draw_power,'checked');
if(strcmp(state,'on')) drawpower = 1; else drawpower = 0; end;

s = get(handles.phase_on,'checked'); if(strcmp(s,'on')) state1 = 1; else state1 = 0; end;
s = get(handles.draw_phase,'enable'); if(strcmp(s,'on')) state2 = 1; else state2 = 0; end;
state = (state1 & state2);
if(state) drawphase = 1; else drawphase = 0; end;

s = get(handles.draw_SNR,'checked'); if(strcmp(s,'on')) state1 = 1; else state1 = 0; end;
s = get(handles.draw_SNR,'enable'); if(strcmp(s,'on')) state2 = 1; else state2 = 0; end;
state = (state1 & state2);
if(state) drawSNR = 1; else drawSNR = 0; end;

varargout = {sim membrane noise stimulus showspikes drawphase drawISI drawS drawSNR drawpower};

% --------------------------------------------------------------------
function varargout = clear_Callback(h, eventdata, handles, varargin)
l = findobj('parent',handles.vaxes); set(l,'erasemode','normal'); delete(l);
l = findobj('parent',handles.Iaxes); set(l,'erasemode','normal');delete(l);

% --------------------------------------------------------------------
function varargout = popup_stimulus_Callback(h, eventdata, handles, varargin)
global STIM_PARAMS;
stimtype = get(h,'value');
switch(stimtype)
case 1 %%STEP PULSE
    set(handles.param1_text,'visible','on','string','Amplitude =');
    set(handles.param1_units1,'visible','on','string','n'); set(handles.param1_units2,'visible','on','string','A');
    set(handles.param1,'visible','on','string',num2str(STIM_PARAMS{stimtype}{1}));
    set(handles.param2_text,'visible','on','string','Duration =');
    set(handles.param2_units,'visible','on','string','ms');
    set(handles.param2,'visible','on','string',num2str(STIM_PARAMS{stimtype}{2}));
    set(handles.param3_text,'visible','on','string','Onset time =');
    set(handles.param3_units1,'visible','on','string','ms','visible','on','fontname','helvetica'); set(handles.param3_units2,'visible','off');
    set(handles.param3,'visible','on','string',num2str(STIM_PARAMS{stimtype}{3}));
    set(handles.param4_text,'visible','off');
    set(handles.param4_units,'visible','off');
    set(handles.param4,'visible','off');
    set(handles.noiseparam3_check,'visible','on');
    set(handles.noiseparam4_check,'visible','on');
    %if(set(handles.noiseparam3_check,'value'))set(handles.noiseparam3_text,'visible','on');end;
    %if(set(handles.noiseparam3_check,'value'))set(handles.noiseparam3,'visible','on');end;
    set(handles.draw_phase,'enable','off');
    set(handles.draw_SNR,'enable','off');
case 2 %%SINE WAVE
    set(handles.param1_text,'visible','on','string','Amplitude =');
    set(handles.param1_units1,'visible','on','string','n'); set(handles.param1_units2,'visible','on','string','A');
    set(handles.param1,'visible','on','string',num2str(STIM_PARAMS{stimtype}{1}));
    set(handles.param2_text,'visible','on','string','Frequency =');
    set(handles.param2_units,'visible','on','string','Hz');
    set(handles.param2,'visible','on','string',num2str(STIM_PARAMS{stimtype}{2}));
    set(handles.param3_text,'visible','on','string','DC offset');
    set(handles.param3_units1,'visible','on','string','n','visible','on','fontname','helvetica'); set(handles.param3_units2,'visible','on','visible','on');
    set(handles.param3,'visible','on','string',num2str(STIM_PARAMS{stimtype}{3}));
    set(handles.param4_text,'visible','off');
    set(handles.param4_units,'visible','off');
    set(handles.param4,'visible','off');
    set(handles.noiseparam3_check,'visible','on');
    set(handles.noiseparam4_check,'visible','on');
    %if(set(handles.noiseparam3_check,'value')) set(handles.noiseparam3_text,'visible','on');end;
    %if(set(handles.noiseparam3_check,'value'))set(handles.noiseparam3,'visible','on');end;
    set(handles.draw_phase,'enable','on');
    set(handles.draw_SNR,'enable','on');
    
case {3} %PULSE TRAINS
    set(handles.param1_text,'visible','on','string','Excitatory amplitude =');
    set(handles.param1_units1,'visible','on','string','n'); set(handles.param1_units2,'visible','on','string','A');
    set(handles.param1,'visible','on','string',num2str(STIM_PARAMS{stimtype}{1}));
    set(handles.param2_text,'visible','on','string','Excitatory rate =');
    set(handles.param2_units,'visible','on','string','Hz');
    set(handles.param2,'visible','on','string',num2str(STIM_PARAMS{stimtype}{2}));
    set(handles.param3_text,'visible','on','string','Inhibitory amplitude =');
    set(handles.param3_units1,'visible','on','string','n'); set(handles.param3_units2,'visible','on','string','A');
    set(handles.param3,'visible','on','string',num2str(STIM_PARAMS{stimtype}{3}));
    set(handles.param4_text,'visible','on','string','Inhibitory rate =');
    set(handles.param4_units,'visible','on','string','Hz');
    set(handles.param4,'visible','on','string',num2str(STIM_PARAMS{stimtype}{4}));
    set(handles.noiseparam3_check,'value',0);
    set(handles.noiseparam3_check,'visible','off');
    set(handles.noiseparam3_text,'visible','off');
    set(handles.noiseparam3,'visible','off');
    set(handles.noiseparam4_check,'visible','on');
    %set(handles.noiseparam4_text,'visible','on');
    %set(handles.noiseparam4,'visible','on');
    set(handles.draw_phase,'enable','off');
    set(handles.draw_SNR,'enable','off');
end;

% --------------------------------------------------------------------
function varargout = param1_Callback(h, eventdata, handles, varargin)
global STIM_PARAMS;
stimtype = get(handles.popup_stimulus,'value');
newval = str2num(get(h,'string'));
STIM_PARAMS{stimtype}{1} = newval;

% --------------------------------------------------------------------
function varargout = param2_Callback(h, eventdata, handles, varargin)
global STIM_PARAMS;
stimtype = get(handles.popup_stimulus,'value');
newval = str2num(get(h,'string'));
STIM_PARAMS{stimtype}{2} = newval;

% --------------------------------------------------------------------
function varargout = param3_Callback(h, eventdata, handles, varargin)
global STIM_PARAMS;
stimtype = get(handles.popup_stimulus,'value');
newval = str2num(get(h,'string'));
STIM_PARAMS{stimtype}{3} = newval;

% --------------------------------------------------------------------
function param4_Callback(hObject, eventdata, handles)
global STIM_PARAMS;
stimtype = get(handles.popup_stimulus,'value');
newval = str2num(get(h,'string'));
STIM_PARAMS{stimtype}{4} = newval;


% --------------------------------------------------------------------
function varargout = noiseparam1_check_Callback(h, eventdata, handles, varargin)
if(get(handles.noiseparam1_check,'value')) r = 'on'; else r = 'off'; end;
set(handles.noiseparam1_text,'visible',r);
set(handles.noiseparam1,'visible',r);

% --------------------------------------------------------------------
function varargout = noiseparam2_check_Callback(h, eventdata, handles, varargin)
if(get(handles.noiseparam2_check,'value')) r = 'on'; else r = 'off'; end;
set(handles.noiseparam2_text,'visible',r);
set(handles.noiseparam2,'visible',r);

% --------------------------------------------------------------------
function varargout = noiseparam3_check_Callback(h, eventdata, handles, varargin)
if(get(handles.noiseparam3_check,'value')) r = 'on'; else r = 'off'; end;
set(handles.noiseparam3_text,'visible',r);
set(handles.noiseparam3,'visible',r);

% --------------------------------------------------------------------
function noiseparam4_check_Callback(hObject, eventdata, handles)
if(get(handles.noiseparam4_check,'value')) r = 'on'; else r = 'off'; end;
set(handles.noiseparam4_text,'visible',r);
set(handles.noiseparam4,'visible',r);


% --------------------------------------------------------------------
function varargout = noiseparam3_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = noiseparam2_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = noiseparam1_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = slider3_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = options_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = transfer_function_Callback(h, eventdata, handles, varargin)
global NPOINTS_TRANSFER_FUNCTION;
global TRANSFER_FUNCTION_IMAX;
h = findobj('type','figure','tag','transfer_function_figure');
if(isempty(h)) 
    h = figure('tag','transfer_function_figure','name','transfer function','NumberTitle','off');
    a = axes;
    set(a,'parent',h);
end;
a = findobj('type','axes','parent',h);
if(isempty(a))
    a = axes;
    set(a,'parent',h);
end;
[sim membrane noise stimulus] = getparams(handles);
Imax = TRANSFER_FUNCTION_IMAX;
dI = Imax/NPOINTS_TRANSFER_FUNCTION;
I = [0:dI:Imax];
r = rate(I,membrane);
figure(h);
hold on;
plot(I,r,'color',rand(1,3),'parent',a);
set(get(a,'xlabel'),'string','input current (uA)');
set(get(a,'ylabel'),'string','firing rate (Hz)');

function r = rate(I,membrane)
switch(membrane.type)
case 1 %Integrate-and-fire model
    i = find(I>membrane.vth/membrane.R);
    r(find(I<=membrane.R*membrane.vth)) = 0;
    r(i) = 1000./(membrane.trefr + membrane.R*membrane.C*log(1 + membrane.vth./(membrane.R*I(i)-membrane.vth)));
end;


% --------------------------------------------------------------------
function varargout = figure1_ResizeFcn(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = vshow_spikes_Callback(h, eventdata, handles, varargin)
state = get(handles.vshow_spikes,'checked');
if(strcmp(state,'on')) check = 'off'; else check = 'on'; end;
set(handles.vshow_spikes,'checked',check);



% --------------------------------------------------------------------
function varargout = cshow_spikes_Callback(h, eventdata, handles, varargin)
state = get(handles.cshow_spikes,'checked');
if(strcmp(state,'on')) check = 'off'; else check = 'on'; end;
set(handles.cshow_spikes,'checked',check);


% --------------------------------------------------------------------
function varargout = show_spikes_Callback(h, eventdata, handles, varargin)


% --------------------------------------------------------------------
function varargout = Untitled_1_Callback(h, eventdata, handles, varargin)




% --------------------------------------------------------------------
function varargout = draw_ISI_Callback(h, eventdata, handles, varargin)
state = get(handles.draw_ISI,'checked');
if(strcmp(state,'on')) check = 'off'; else check = 'on'; end;
set(handles.draw_ISI,'checked',check);




% --------------------------------------------------------------------
function varargout = draw_phase_Callback(h, eventdata, handles, varargin)
state = get(handles.draw_phase,'checked');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -