⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vtfar20.m

📁 用于模拟时变非平稳的ARMA过程
💻 M
字号:
function [AML, B0L, Mest, Lest, Best, InfoCr, Varian]= vtfar20(X, MMIN, MMAX, LMIN, LMAX, BMIN, BMAX, crit)% function [AML, B0L, Mest, Lest, Best, InfoCr, Varian]= vtfar20(X, MMIN, MMMAX, LMIN, LMAX, BMIN, BMAX, crit)%   This file is part of the TFPM toolbox v1.0 (c)%   michael.jachan@tuwien.ac.at and underlies the GPL.% % An automatic procedure to identify VTFAR(M, L) models. The% maximum search space defaults to MMAX, LMAX= N/16, The order% estimation IC defaults to the AIC. The signal is NOT normalized% to energy N! % EstInfo= {SigHat, InfoCr, NrIter, NrPara, EstInn, PENALTY, AMBI};%% TODO: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpmalpha= 1/2;N=  64;M0=  3;L0=  2;J0=  1;B0=  1;MMIN= 1;MMAX= M0+1;LMIN= 0;LMAX= L0+1;BMIN= 1;BMAX= J0;crit= 'AIC';filename= sprintf('vtfar%02d%02d%02d%04d', M0, L0, J0, N)load(filename);AML0= AML;B0L0= B0L;%AML0= eye(J0);B0L0= eye(J0);E0= randn(N, J0);X= vtfarma_gen(E0, AML0, B0L0, B0, 1/2);L= L0;M= M0;[AML, B0L, Mest, Lest, Best, InfoCr, Varian]= vtfar20(X, MMAX, LMIN, LMAX, BMIN, BMAX, crit)y= tfarma_gen(E0, reshape(AML, 2*L+1, M+1), reshape(B0L, 2*L+1, 1), 1/2);norm(X-y)/norm(X)% THE CHANNELclear;tfpmalpha= 1/2;load updown_h_rusk.matfigure(1);clf;subplot(2, 1, 1);mesh(abs(h_I2))N= 512;J= 5;MMIN= 1;MMAX= 6;LMIN= 0;LMAX= 3;BMIN= 1;BMAX= 3;crit= 'AIC';for offset= 0:200:1800   X= 1000*h_I2(offset+1:offset+N, 29:29+J);   subplot(2, 1, 2);mesh(abs(X/1000));drawnow   [AML, B0L, Mest, Lest, Best, InfoCr, Varian]= vtfar20(X, MMIN, MMAX, LMIN, LMAX, BMIN, BMAX, crit);   [Mest, Lest, Best]   filename= sprintf('ident%02d%02d%02d-%04d', J, BMIN, BMAX, offset)   save(filename, 'AML', 'B0L', 'InfoCr', 'Varian', 'Mest', 'Lest', 'Best');end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The penalty%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%switch(lower(crit)) case 'mdl'  PENALTY= log(N+1)+rho; case 'aic'  PENALTY= 2; otherwise  PENALTY= str2num(crit);end;[N, J]= size(X);alpha= 1/2;% Compute the EXAFsX= X/sqrt(energy(X));[AMBI, ambi]= vtfar_ambiest(X, MMAX, LMAX);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for j= 1:J   for jp= 1:J      [j jp]      figure(1);clf;tf_show(reshape(AMBI(j, jp, :, :), N, N))      figure(2);clf;mesh(abs(reshape(AMBI(j, jp, :, :), N, N)))      pause   end;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PrepareInfoCr= 9999999*ones(MMAX, LMAX+1, J);NrPara= InfoCr;Varian= InfoCr;for m= 1:MMAX   for l= 0:LMAX      for b= 1:J         NrPara(m, l+1, b)= ((m+1)*(.7*2*l+1)-1)*number_band(J, b);      end;   end;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for L= LMIN:LMAX   for M= MMIN:MMAX%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for L= 1:1%   for M= 2:2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%      [M L]      [AML, B0L]= vtfar_parest(ambi, M, L, N);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[AML0 AML]sum(sum(sum(sum(abs(AML-AML0)))))/sum(sum(sum(sum(abs(AML0)))))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Compute the MoNiC Model!!!!!!!!!!!!!      b0L= zeros(size(B0L));      bbb= inv(B0L(:, :, L+1, 1));      for l= -L:L         b0L(:, :, L+1+l, 1)= B0L(:, :, L+1+l, 1)*bbb;      end;      for B= BMIN:BMAX%         clear AMBI%	 pack%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%         clear Linv         Linv= vtfarma_Linv(AML, b0L, N, B, alpha);         V= zeros(J);         for tau= 1:J            for taup= 1:J               for t= 1:J                  for tp= 1:J%                     [M L B tau taup t tp]                     V(tau, taup)= V(tau, taup) + sum(sum(...                     reshape(Linv(tau, t, :, :), N, N).*...                     reshape(conj(Linv(taup, tp, :, :)), N, N).*...                     nm_to_nk(ml_to_nm(reshape(AMBI(t, tp, :, :), N, N)))));                  end;               end;            end;         end;         V= V/N^2;         e= real(eig(V));         e= e.*(e>0);	 if(prod(e))	    Varian(M, L+1, B)= log(prod(e));	 else	    Varian(M, L+1, B)= 99999999;	 end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%         Ehat= vtfarma_inv(X, AML, b0L, B, 1/2);         V= Ehat'*Ehat/N;	 Varian(M, L+1, B)= log(real(det(V)));      end;%for B= 0:J-1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   end;%for M= 1:MMAX;end;%for L= 0:LMAX%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%InfoCr= Varian + PENALTY*NrPara/N;MinCr= max(max(max(InfoCr)));Best= 0;for b= 1:J   if(min(min(InfoCr(:, :, b)))<MinCr)      [Mest, Lest]= find(InfoCr(:, :, b)==min(min(InfoCr(:, :, b))));      MinCr= min(min(InfoCr(:, :, b)));      Best= b;   end;end;Lest= Lest-1;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[M0 L0 B0 Mest Lest Best]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[AML, B0L]= vtfar_parest(ambi, Mest, Lest, N);for j= 1:J   for jp= 1:J      if(abs(j-jp)>=Best)         AML(j, jp, :, :)= zeros(2*Lest+1, Mest+1);         B0L(j, jp, :, :)= zeros(2*Lest+1, 1);      end;   end;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpmalpha= 1/2;N=  256;M0= 2;L0= 1;J0= 4;B0= 2;MMAX= M0+2;LMAX= L0+1;crit= 'AIC';filename= sprintf('vtfar%02d%02d%02d%04d', M0, L0, J0, N)load(filename);AML0= AML;B0L0= B0L;MM= 100;MLBest= [];for mm= 1:MM   X= vtfarma_gen(randn(N, J0), AML0, B0L0, B0, 1/2);   [AML, B0L, Mest, Lest, Best, InfoCr, Varian]= vtfar20(X, MMAX, 0, LMAX, 1, J0, crit);   [mm Mest Lest Best M0 L0 B0]   MLBest= [MLBest; [Mest Lest Best]];end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -