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 |