annotate ddm_der2_lin_sys_sol.m @ 4:72c011ed1977 tip

more elaborate example with non-stat. estimate explanation
author smusevic
date Tue, 30 Jul 2013 09:56:27 +0100
parents a4a7e3405062
children
rev   line source
dan@0 1 function [dddlss ddlss dlss A_der2_plus A_der_plus A_plus] = ...
dan@0 2 ddm_der2_lin_sys_sol(A_sys,b_sys,A_der_sys,b_der_sys,A_der2_sys,b_der2_sys,N_fft,R,Q)
dan@0 3 dlss = zeros(Q+1, N_fft-R+1);
dan@0 4 ddlss = zeros(Q+1, N_fft-R+1);
dan@0 5 dddlss = zeros(Q+1, N_fft-R+1);
dan@0 6
dan@0 7 for l=1:N_fft-R+1
dan@0 8 A = A_sys(:,:,l);
dan@0 9 b = b_sys(:,:,l);
dan@0 10
dan@0 11 AA_inv = inv(A'*A);
dan@0 12 A_plus = AA_inv*A';
dan@0 13 ddm_est_ = fliplr((A_plus * b).');
dan@0 14 dlss(:,l) = [ddm_est_ 0];
dan@0 15
dan@0 16 A_der = A_der_sys(:,:,l);
dan@0 17 b_der = b_der_sys(:,:,l);
dan@0 18 AA_mix = ( A_der' * A + A' * A_der );
dan@0 19 A_der_plus = (-AA_inv * AA_mix * AA_inv * A' + AA_inv * A_der');
dan@0 20 ddm_est_der_ = fliplr((A_der_plus *b + A_plus * b_der).');
dan@0 21 ddlss(:,l) = [ddm_est_der_ 0];
dan@0 22
dan@0 23 A_der2 = A_der2_sys(:,:,l);
dan@0 24 b_der2 = b_der2_sys(:,:,l);
dan@0 25
dan@0 26 AA_inv_der = - AA_inv * AA_mix * AA_inv;
dan@0 27 AA_mix_der = A_der2'*A + 2*A_der'*A_der + A'*A_der2;
dan@0 28 A_der2_plus = ...
dan@0 29 - AA_inv_der * AA_mix * AA_inv * A'...
dan@0 30 - AA_inv * AA_mix_der * AA_inv * A'...
dan@0 31 - AA_inv * AA_mix * AA_inv_der * A'...
dan@0 32 - AA_inv * AA_mix * AA_inv * A_der'...
dan@0 33 + AA_inv_der * A_der' + AA_inv * A_der2';
dan@0 34 ddm_est_der2_ = fliplr((A_der2_plus *b +2 * A_der_plus * b_der + A_plus*b_der2).');
dan@0 35 dddlss(:,l) = [ddm_est_der2_ 0];
dan@0 36
dan@0 37 end
dan@0 38 end