Skip to content
PAL_AMPM_PosteriorTplus1.m 1.76 KiB
Newer Older
Julian Kosciessa's avatar
Julian Kosciessa committed
%
%PAL_AMPM_PosteriorTplus1  Derives posterior distributions for combinations
%   of stimulus intensity and response on trial T + 1 in psi method 
%   adaptive procedure.
%   
%   syntax: [PosteriorTplus1givenSuccess PosteriorTplus1givenFailure ...
%       pSuccessGivenx] = PAL_AMPM_PosteriorTplus1(pdf, PFLookUpTable)
%
%   Internal function
%
%Introduced: Palamedes version 1.0.0 (NP)
%Modified: Palamedes version 1.5.0, 1.6.1, 1.6.3 (see History.m)

function [PosteriorTplus1givenSuccess, PosteriorTplus1givenFailure, pSuccessGivenx] = PAL_AMPM_PosteriorTplus1(pdf, PFLookUpTable)

pdf5D = repmat(pdf, [1 1 1 1 size(PFLookUpTable,5)]);
pSuccessGivenx = sum(sum(sum(sum(pdf5D.*PFLookUpTable,1),2),3),4);

PosteriorTplus1givenSuccess = pdf5D.*PFLookUpTable;
PosteriorTplus1givenFailure = pdf5D-PosteriorTplus1givenSuccess;

if exist('bsxfun.m','file')
    PosteriorTplus1givenSuccess = bsxfun(@rdivide,PosteriorTplus1givenSuccess,sum(sum(sum(sum(PosteriorTplus1givenSuccess,1),2),3),4));
    PosteriorTplus1givenFailure = bsxfun(@rdivide,PosteriorTplus1givenFailure,sum(sum(sum(sum(PosteriorTplus1givenFailure,1),2),3),4));
else    
    Denominator = squeeze(sum(sum(sum(sum(PosteriorTplus1givenSuccess,1),2),3),4));
    Denominator = repmat(Denominator, [1 size(pdf5D,1) size(pdf5D,2) size(pdf5D,3) size(pdf5D,4)]);
    Denominator = permute(Denominator, [2 3 4 5 1]);
    PosteriorTplus1givenSuccess = PosteriorTplus1givenSuccess./Denominator;
    
    Denominator = squeeze(sum(sum(sum(sum(PosteriorTplus1givenFailure,1),2),3),4));
    Denominator = repmat(Denominator, [1 size(pdf5D,1) size(pdf5D,2) size(pdf5D,3) size(pdf5D,4)]);
    Denominator = permute(Denominator, [2 3 4 5 1]);
    PosteriorTplus1givenFailure = PosteriorTplus1givenFailure./Denominator;
end