Mercurial > hg > ddm
annotate ddm_der_lin_sys_sol.m @ 0:a4a7e3405062
Import DDM code by Sašo Muševič
author | Dan Stowell <dan.stowell@elec.qmul.ac.uk> |
---|---|
date | Thu, 09 May 2013 20:04:15 +0100 |
parents | |
children |
rev | line source |
---|---|
dan@0 | 1 function [ddlss dlss A_plus AA_inv A_der_plus] = ddm_der_lin_sys_sol(A_sys,b_sys,A_der_sys,b_der_sys,N_fft,R,Q) |
dan@0 | 2 dlss = zeros(Q+1, N_fft-R+1); |
dan@0 | 3 ddlss = zeros(Q+1, N_fft-R+1); |
dan@0 | 4 |
dan@0 | 5 for l=1:N_fft-R+1 |
dan@0 | 6 A = A_sys(:,:,l); |
dan@0 | 7 b = b_sys(:,:,l); |
dan@0 | 8 |
dan@0 | 9 |
dan@0 | 10 AA_inv = inv(A'*A); |
dan@0 | 11 A_plus = AA_inv*A'; |
dan@0 | 12 ddm_est_ = fliplr((A_plus * b).'); |
dan@0 | 13 dlss(:,l) = [ddm_est_ 0]; |
dan@0 | 14 |
dan@0 | 15 A_der = A_der_sys(:,:,l); |
dan@0 | 16 b_der = b_der_sys(:,:,l); |
dan@0 | 17 AA_mix = ( A_der' * A + A' * A_der ); |
dan@0 | 18 A_der_plus = (-AA_inv * AA_mix * AA_inv * A' + AA_inv * A_der'); |
dan@0 | 19 ddm_est_der_ = fliplr((A_der_plus *b + A_plus * b_der).'); |
dan@0 | 20 ddlss(:,l) = [ddm_est_der_ 0]; |
dan@0 | 21 |
dan@0 | 22 end |
dan@0 | 23 end |