1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | %% objective function for fitting state-space model function [error] = func_SS(params,ha,us) A = params(1); B = params(2); err = params(3); ntrials = length(us); X = zeros(1,ntrials+1); us(601:end) = 0; % probe/washout for t = 1:ntrials if ~isnan(ha(t)) if t <= 600 spe = err*us(t) - X(t); else spe = 0 - X(t); end X(t+1) = A*X(t) + B*spe; end end valid = find(~isnan(ha)); error = nansum((ha(valid)-X(valid)).^2); |