Chapter 4: limit of zero weight given to previous temporal intervals

clear %#ok<*UNRCH>

%%%%%%%%%%%%%

%%% Flags %%%

reset=false;

%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Timing with drift %%%

L=801;

Ngroups=4; Nper=80; T=Ngroups*Nper;

trange=[.3 1]; drange=.1*diff(trange); dvar=.05;

taus=linspace(0,1.5,L)';

pri=zeros(L,1);

if and(~reset,exist(['timedat2.mat'],'file'))

load(['timedat2.mat'])

else

disp('generating temporal intervals');

tmat=linspace(trange(1),trange(2),Ngroups+1);

tmat=[str8n(tmat(1:Ngroups))-drange str8n(tmat(2:end))+drange]; %matrix of overlapping timing ranges

tnow=nan(size(tmat,1),Nper);

like=@(t,sig) -log(sig)-.5*(t-taus).^2./sig^2; tset=nan(size(tmat));

drange=.2;

for n=1:Ngroups,

inow=randi(size(tmat,1));

tset(n,:)=tmat(inow,:);

tmat=RFL(tmat,inow);

tnow(n,:)=diff(tset(n,:))*(rand([1 Nper])-.5)+mean(tset(n,:)); end

tnow=str8n(tnow'); signow=tnow/17; save('timedat2.mat'); end %scalar property

%time differences and likelihood over differences

dtaus=taus*ones(1,L)-ones(L,1)*taus';

LtauD=0*(-.5*dtaus.^2./dvar^2);

%likelihood computation

Like=@(onow,snow) -log(snow)-.5*(onow-taus).^2/snow^2;

%initialize likelihood and estimate

Lnow=zeros(L,1); tauest=nan(T,1); tic

for t=1:T,

Llastpostsum=logsum(Lnow*ones(1,L)+LtauD,1,diff(taus(1:2)));

Lnow=like(tnow(t),signow(t))+Llastpostsum;

tauest(t)=logpeakval([Lnow taus]);

if rem(t,Nper)==0, toc; end, end

%%%%%%%%%%%%%%%%

%%% PLOTTING %%%

figure(1); clf; %est by trial

subplot(2,1,1); hold on

for n=1:Ngroups,

plot((n-1)*Nper+[1 Nper],mean(tset(n,:))*[1 1],'k-','LineWidth',2); end

plot(tauest,'.')

%%% remembered / estimated

subplot(2,1,2); hold on

plot([0 1.2],[0 1.2],'k--')

for n=1:Ngroups,

plot(tset(n,:),mean(tset(n,:))*[1 1],'k-','LineWidth',1.3); end

plot(tnow,tauest,'.','Color',[.2 .3 .7]);

punderover=[]; %proportional error

for n=1:Ngroups,

ilist=Nper*(n-1)+round(.5*Nper):Nper;

punderover=[punderover; [tnow(ilist)-tset(n,1) (tauest(ilist)-tnow(ilist))/diff(tset(n,:))]]; end %#ok<AGROW>

figure(2); clf; plotmat(punderover,'ko','MarkerFaceColor','k','MarkerSize',6)

figure(3); clf; meshc(taus,taus,LtauD)