spm_vb_lambda.m 1012 B

123456789101112131415161718192021222324252627282930313233
  1. function [block] = spm_vb_lambda(Y,block)
  2. % Variational Bayes for GLM-AR models - Update lambda
  3. % FORMAT [block] = spm_vb_lambda(Y,block)
  4. %
  5. % Y - [T x N] time series
  6. % block - data structure (see spm_vb_glmar)
  7. %__________________________________________________________________________
  8. % Copyright (C) 2005-2014 Wellcome Trust Centre for Neuroimaging
  9. % Will Penny and Nelson Trujillo-Barreto
  10. % $Id: spm_vb_lambda.m 6079 2014-06-30 18:25:37Z spm $
  11. if block.verbose
  12. disp('Updating lambda');
  13. end
  14. p = block.p;
  15. k = block.k;
  16. N = block.N;
  17. for n=1:N
  18. if p > 0
  19. % Equation 77 in paper VB1
  20. Gn = spm_vb_get_Gn (Y,block,n);
  21. else
  22. subblock_n = [(n-1)*k+1:n*k];
  23. en = Y(:,n) - block.X*block.w_mean(subblock_n,1);
  24. Gn = trace(block.w_cov{n}*block.XTX) + en'*en;
  25. end
  26. % Equation 75 in paper VB1
  27. block.b_lambda(n,1) = 1./(Gn./2 + 1./block.b_lambda_prior(n));
  28. block.mean_lambda(n,1) = block.c_lambda(n)*block.b_lambda(n);
  29. end