annotate ddm_lin_sys_fft_single.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 [A_sys,b_sys] = ddm_lin_sys_fft_single(ddm_bins, R, win, win_der, mf_ders, sig, N, N_fft, fs)
dan@0 2
dan@0 3 assert(size(mf_ders,1) == N );
dan@0 4 assert(size(mf_ders, 2) == R);
dan@0 5 assert(size(win,1) == N );
dan@0 6 assert(size(win,2) == 1 );
dan@0 7 assert(size(win_der,1) == N );
dan@0 8 assert(size(win_der,2) == 1 );
dan@0 9 assert(size(sig,1) == N );
dan@0 10 assert(size(sig,2) == 1 );
dan@0 11 assert(N <= N_fft);
dan@0 12
dan@0 13 Q = length(ddm_bins);
dan@0 14
dan@0 15 win_mat = repmat(win, 1, R);
dan@0 16 frqs_fft = [0:N_fft-1]'*fs*2*pi/N_fft;
dan@0 17 [str_idx end_idx] = zpzh_idxs(N);
dan@0 18 sig_mat = repmat(sig, 1, R);
dan@0 19 fft_sig_mat_bffr = win_mat .* sig_mat .* mf_ders;
dan@0 20 fft_sig_win_der_bffr = win_der .* sig;
dan@0 21 fft_sig_win_der = fft([fft_sig_win_der_bffr(str_idx,:);zeros(N_fft-N,1);fft_sig_win_der_bffr(end_idx,:)],N_fft,1);
dan@0 22 A = fft([fft_sig_mat_bffr(str_idx,:);zeros(N_fft-N,R);fft_sig_mat_bffr(end_idx,:)], N_fft, 1); %zero padded sheeza
dan@0 23 b = -(fft_sig_win_der - 1j*frqs_fft.* A(:,1));
dan@0 24 A_sys = A(ddm_bins,:);
dan@0 25 b_sys = b(ddm_bins);
dan@0 26 end