0001 function [slice] = spm_vb_alpha (Y,slice)
0002
0003
0004
0005
0006
0007
0008
0009
0010 if slice.verbose
0011 disp('Updating alpha');
0012 end
0013
0014 N=slice.N;
0015 k=slice.k;
0016
0017
0018 for n=1:N,
0019 for j = 1:k,
0020 w_cov_k(n,j) = slice.w_cov{n}(j,j);
0021 end
0022 end
0023
0024 for j = 1:k,
0025 block_k = j:k:N*k;
0026 H = sum(spdiags(slice.D,0).*w_cov_k(:,j)) + slice.w_mean(block_k)'*slice.D*slice.w_mean(block_k);
0027
0028 slice.b_alpha(j) = 1./(H./2 + 1./slice.b_alpha_prior);
0029 slice.mean_alpha(j) = slice.c_alpha(j)*slice.b_alpha(j);
0030 end
0031
0032