Mercurial > hg > ddm
view pinv_2_fast.m @ 4:72c011ed1977 tip
more elaborate example with non-stat. estimate explanation
author | smusevic |
---|---|
date | Tue, 30 Jul 2013 09:56:27 +0100 |
parents | e2b116f3b69b |
children |
line wrap: on
line source
function xx = pinv_2_fast(A,b,Q,N) b_mat = repmat(reshape(b,[Q,1,1,N]),[1 Q-1 2 1]); AA = zeros(Q,(Q-1),2,N); A1= zeros(Q,(Q-1),2,N); vct_idx = 1:Q; for q=1:Q vct_Q = vct_idx([1:q-1,q+1:Q]); A1(q,:,1,:) = shiftdim(A(vct_Q, 2,:),-1); AA(q,:,1,:) = repmat(A(q,1,:),(Q-1),1) .* A(vct_Q,2,:); A1(q,:,2,:) = A(vct_idx([1:q-1,q+1:Q]), 1,:); AA(q,:,2,:) = repmat(A(q,2,:),(Q-1),1) .* A(vct_Q,1,:); end A2 = (cat(3,conj(AA(:,:,1,:)-AA(:,:,2,:)) .* A1(:,:,1,:),conj(AA(:,:,1,:) - AA(:,:,2,:)) .* A1(:,:,2,:))); A3 = shiftdim(sum(sum(AA(:,:,2,:) .* conj(AA(:,:,1,:)-AA(:,:,2,:)))),3); A_nrm = [-A3, A3]; xx = shiftdim(sum(sum(A2 .* b_mat)), 2).' ./ A_nrm;