?? tfarma_est_mlu.m
字號:
function [A, B, exitflag, output]= tfarma_est_mlu(Ayy, Aml0, Bml0, opts)% function [A, B, exitflag, output]= tfarma_est_mlu(Ayy, Aml0, Bml0, opts)% This file is part of the TFPM toolbox v1.0 (c)% michael.jachan@tuwien.ac.at and underlies the GPL.% % Underspread ML estimator for real-valued TFARMA(MAR, LAR; MMA, LMA; N; 1/2)% models. Log-likelihood in tfarma_llfu.m. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpm;N = 64;MAR = 1;LAR = 1;MMA = 1;LMA = LAR;re_im= 'r';mo_no= 'n';tfpm_file_gen;%-------------beta = 1/2;MC= MAR+MMA+1;LC= LAR+LMA+1;Psi= tf_multiwin(N, 2*MC, 2*LC, 5, 1, 1);INSTAB= 1;while(INSTAB~=0) y= tfarma_gen(randn(N, 1), Aml, Bml, beta); qyy= corr_est(y, y, -1, 1/2); ayy= fft(qyy); ayy= [ayy(N/2+1:N, :); ayy(1:N/2, :)]; Ayy= ayy.*conj(Psi); ayy= Ayy(N/2-3*LC+1:N/2+3*LC+1, N/2-MC+1:N/2+MC+1); [Aml0, Bml0, INSTAB]= gkmu(ayy, N, MAR, LAR, MMA, LMA);end;opts= optimset('GradObj', 'on', 'Display', 'iter', 'Diagnostics', 'on');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Dimensions:[MAR, LAR]= param_dim(Aml0);[MMA, LMA]= param_dim(Bml0);theta_AB= [param_stack_ml(param_split(Aml0(:, 2:end))); param_stack_ml(param_split(Bml0))];%theta_AB= [param_stack_ml(param_split(Aml0(:, 2:end)))];% RANDOM INIT. TRY OUT!!!!!!!!!!!!!!%theta_AB= randn(size(theta_AB))Pyy= real(nm_to_nk(ml_to_nm(Ayy)));opts= optimset('GradObj', 'on', 'Display', 'iter', 'Diagnostics', 'on');% Call fminunc:[X, lX, exitflag, output]= fminunc('tfarma_llfu', theta_AB, opts, Pyy, MAR, LAR, MMA, LMA);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Call fmincon:NIET JUIST!!![X, lX, exitflag, output]= fmincon('tfar_llfu', theta_AB, [], [], [], [], -3*ones(size(theta_AB)), 3*ones(size(theta_AB)), [], opts, Pyy, MAR, LAR);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%X_A= X(1:(MAR)*(2*LAR+1));X_B= X((MAR)*(2*LAR+1)+1:end);A= param_destack_ml(X_A, MAR-1, LAR);B= param_destack_ml(X_B, MMA , LMA);A= [[zeros(LAR, 1); 1; zeros(LAR, 1)] A];A= param_merge(A);B= param_merge(B);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%param_norm([Aml0 Bml0], [Aml Bml], 1)param_norm([A B ], [Aml Bml], 1)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpm;N = 64;MAR = 1;LAR = 1;MMA = 1;LMA = LAR;re_im= 'r';mo_no= 'n';tfpm_file_gen;%-------------beta = 1/2;mm= 1;MM= 10;opts= optimset('GradObj', 'on', 'Display', 'iter', 'Diagnostics', 'on');AMLgk= zeros(2*LAR+1, MAR+MMA+1, MM);AMLml= zeros(2*LAR+1, MAR+MMA+1, MM);Iter= [];NFun= [];EFLG= [];MC= MAR+MMA+1;LC= LAR+LMA+1;Psi= tf_multiwin(N, 2*MC, 2*LC, 5, 1, 1);for mm= 1:MM mm INSTAB= 1; while(INSTAB~=0) y= tfarma_gen(randn(N, 1), Aml, Bml, beta); qyy= corr_est(y, y, -1, 1/2); ayy= fft(qyy); ayy= [ayy(N/2+1:N, :); ayy(1:N/2, :)]; Ayy= ayy.*conj(Psi); ayy= Ayy(N/2-3*LC+1:N/2+3*LC+1, N/2-MC+1:N/2+MC+1); [Aml0, Bml0, INSTAB]= gkmu(ayy, N, MAR, LAR, MMA, LMA); end; [A, B, exitflag, output]= tfarma_est_mlu(Ayy, Aml0, Bml0, opts); Iter= [Iter; output.iterations]; NFun= [NFun; output.funcCount]; EFLG= [EFLG; exitflag]; figure(1);clf;plot(Iter);drawnow figure(2);clf;plot(NFun);drawnow AMLgk(:, :, mm)= [Aml0(:, 2:end) Bml0]; AMLml(:, :, mm)= [A(:, 2:end) B];end;[mean(Iter) mean(NFun)][Mgk, Vgk, Bgk]= param_mse(AMLgk, [Aml(:, 2:end) Bml])[Mml, Vml, Bml]= param_mse(AMLml, [Aml(:, 2:end) Bml])[norm(Mgk) norm(Mml)]mean(AMLgk, 3)mean(AMLml, 3)sum(EFLG)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -