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

📄 tf_multiwin.m

📁 用于模拟时变非平稳的ARMA过程
💻 M
字号:
function [Psi, Mask, v2]= tf_multiwin(N, M, L, K, cut, proto)% function [Psi, Mask, v2]= tf_multiwin(N, M, L[, K, cut, proto])%   This file is part of the TFPM toolbox v1.0 (c)%   michael.jachan@tuwien.ac.at and underlies the GPL.% % Generates a positive semidefinite (nonseparable) TF window starting% from a prototype:%   0: Hanning/Hanning%   1: Gaussian%   2: Choi-Williams?% The variable cut means:%   0: nothing happens%   1: the prototype is multiplied by a rect(M, L)%   2: "   "         "  "               rolloff(M, L).%% The largest positive K eigenvalues are used to form the% posdef. function, alpha= 1/2! If K==0 the K= N/M/L. Kmax=% sqrt(N), Mmax, Lmax= N/2-1!%% Stefan: Psi= tf_multiwin(N, M, L, 0, 2, 1)!!!!!!!!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpm;N    = 128;M    =   3;L    =   3;K    =   0;cut  =   0;proto=   0;Psi= tf_multiwin(N, M, L);tf_show(Psi)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha= 1/2;if( ~M && ~L)   Psi= ones(N);   Mask= Psi;   v2= [];   return;end;if(M>N/2-1)   M= N/2-1;end;if(L>N/2-1)   L= N/2-1;end;if(nargin<=5)   proto= 1;end;if(nargin<=4)   cut= 2;end;if(nargin<=3)   K= 0;end;if(~K)   K= max(1, floor(2*N/(M+1)/(L+1)));end;if(K>sqrt(N))   K= floor(sqrt(N));end;%if(K<3)%   K= 3;%end;Mask= zeros(N);switch(proto) case 0% Hanning/Hanning  L1= ceil(0.8*N/L);  L1= ceil(L1/3*2);M= ceil(1.5*M);  winm= [zeros(1, N/2-M) hanning(2*M+1).' zeros(1, N/2-M-1)];  winl= [zeros(N/2-L1, 1); hanning(2*L1+1); zeros(N/2-L1-1, 1)];  Winl= fft([winl(N/2+1:N); winl(1:N/2)]);  Winl= real([Winl(N/2+1:N); Winl(1:N/2)]);  Mask= Winl*winm; case 1% Gaussian  if(M)     Maskm= exp(-(-N/2:N/2-1).^2/M^2);  else     Maskm= ones(1, N);  end;  if(L)     Maskl= exp(-(-N/2:N/2-1).^2/L^2).';  else     Maskl= ones(N, 1);  end; Mask= Maskl*Maskm; case 2% Choi-Williams?NOT WORKING NOW!!!  if(~M)     M= 1;  end;  if(~L)     L= 1;  end;  for m= -N/2:N/2-1     for l= -N/2:N/2-1        Mask(l+1+N/2, m+1+N/2)=exp(-m^2*l^2/M^2/L^2);     end  endend;switch(cut) case 0  Mask1= ones(N); case 1  Mask1= zeros(N);  Mask1(N/2+1-L:N/2+1+L, N/2+1-M:N/2+1+M)= ones(2*L+1, 2*M+1); case 2  Mask1= zeros(N);  Mask1(N/2+1-L:N/2+1+L, N/2+1-M:N/2+1+M)= ones(2*L+1, 2*M+1);  Mask1(N/2+1-L:N/2+1+L, N/2+1-M)= ones(2*L+1, 1)/2;  Mask1(N/2+1-L:N/2+1+L, N/2+1+M)= ones(2*L+1, 1)/2;  Mask1(N/2+1-L, N/2+1-M:N/2+1+M)= ones(1, 2*M+1)/2;  Mask1(N/2+1+L, N/2+1-M:N/2+1+M)= ones(1, 2*M+1)/2;end;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%figure(94);clf;cesh(Mask)figure(95);clf;imagesc(abs(Mask))figure(96);clf;cesh(Mask1)figure(97);clf;imagesc(Mask1)figure(98);clf;cesh(Mask.*Mask1)figure(99);clf;imagesc(Mask.*Mask1)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Mask= Mask.*Mask1;Mask= (Mask+sym_ambi(Mask))/2;%:-)psi= ml_to_nm(Mask);psi= lag_to_ker(psi, 1/2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%figure(97);clf;tf_show(psi);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[U, V]= eig(psi);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[max(max(abs(imag(U)))) max(max(abs(imag(V))))]figure(98);clf;tf_show(U)figure(99);clf;clot(diag(V))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%V2 = real(diag(pospart(V)));v2= flipud(sort(V2));v2= v2(1:K);V2= V2.*(V2>=min(v2));psi2 = U*diag(V2)*U';%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%figure(97);clf;tf_show(psi2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Psinm= ker_to_lag(psi2, -1, 1/2);Psiml= nm_to_ml(Psinm);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%figure(97);clf;tf_show(Psinm);figure(98);clf;tf_show(Psiml);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Psi= Psiml/Psiml(N/2+1, N/2+1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Psi(N/2+1, N/2+1)figure(97);clf;cesh(Psi)figure(98);clf;cesh(nm_to_nk(ml_to_nm(Psi)))figure(99);clf;cesh(Psi-sym_ambi(Psi))norm(Psi-sym_ambi(Psi))N=128;M=  4;L=  4;cut= 0;[Psi, Mask, v2]= tf_multiwin(N, M, L, 0, cut, 2);v2figure(1);clf;imagesc(abs(Psi))set(gca, 'XTick', [1 N/2+1-M N/2+1 N/2+1+M N])set(gca, 'XTicklabel', [-N/2 -M 0 M N/2-1])set(gca, 'YTick', [1 N/2+1-L N/2+1 N/2+1+L N])set(gca, 'YTicklabel', [-N/2  -L 0 L N/2-1])colormap(flipud(gray.^2))%print('-depsc2', '-tiff', '-r300', sprintf('/users/mjachan/tex/prj/TF/figures/kernel%d%d%d1', M, L, cut))figure(2);clf;subplot(2, 1, 1);plot(abs(Psi.'), 'Color', 'k')axis([1 N 0 1.1])set(gca, 'XTick', [1 N/2+1-M N/2+1 N/2+1+M N])set(gca, 'XTicklabel', [-N/2 -M 0 M N/2-1])subplot(2, 1, 2);plot(abs(Psi), 'Color', 'k')axis([1 N 0 1.1])set(gca, 'XTick', [1 N/2+1-L N/2+1 N/2+1+L N])set(gca, 'XTicklabel', [-N/2  -L 0 L N/2-1])%print('-depsc2', '-tiff', '-r300', sprintf('/users/mjachan/tex/prj/TF/figures/kernel%d%d%d2', M, L, cut))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%N= 128figure(94);clf;imagesc(abs(tf_multiwin(N,  0,  0, 10, 2, 1)))figure(95);clf;imagesc(abs(tf_multiwin(N,  0,  1, 10, 2, 1)))figure(96);clf;imagesc(abs(tf_multiwin(N,  0,  2, 10, 2, 1)))figure(97);clf;imagesc(abs(tf_multiwin(N,  1,  0, 10, 2, 1)))figure(98);clf;imagesc(abs(tf_multiwin(N,  1,  1, 10, 2, 1)))figure(99);clf;imagesc(abs(tf_multiwin(N,  1,  2,  6, 2, 1)))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%N= 128figure(94);clf;cesh(tf_multiwin(N,  0,  0, 10, 2, 1))figure(95);clf;cesh(tf_multiwin(N,  0,  1,  9, 2, 1))figure(96);clf;cesh(tf_multiwin(N,  0,  2,  8, 2, 1))figure(97);clf;cesh(tf_multiwin(N,  1,  0,  7, 2, 1))figure(98);clf;cesh(tf_multiwin(N,  1,  1,  6, 2, 1))figure(99);clf;cesh(tf_multiwin(N,  1,  2,  5, 2, 1))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%N= 128for M= 0:10   for L= 0:10      [M, L]      [Psi, Mask, v2]= tf_multiwin(N, M, L, 0, 2, 1);      figure(94);clf;cesh(Psi)      figure(95);clf;imagesc(abs(Psi))      figure(96);clf;plot(v2);      pause   endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%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;MAR  =   3;LAR  =   3;MMA  =   0;LMA  =   0;N    =  64;re_im= 'r';mo_no= 'm';tfpm_file_gen;%-------------figure(94);clf;mesh(abs(tfarma_ambi(Aml, Bml, N, 1/2)));figure(95);clf;mesh(tfarma_wvsp(Aml, Bml, N, 1/2));Psi= tf_multiwin(N, 2*MAR, 2*LAR, 0, 2, 0);figure(96);clf;mesh(abs(Psi));y= tfarma_gen(randn(N, 1), Aml, Bml, 1/2);Qalpha= corr_est(y, y, -1, 1/2);Aalpha= fft(Qalpha);Aalpha= [Aalpha(N/2+1:N, :); Aalpha(1:N/2, :)];%figure(97);clf;mesh(abs(Aalpha))Awlpha= Aalpha.*conj(Psi);figure(98);clf;mesh(abs(Awlpha))%Palpha= nm_to_nk(ml_to_nm(Aalpha));%figure(98);clf;cesh(Palpha)Pwlpha= real(nm_to_nk(ml_to_nm(Awlpha)));figure(99);clf;mesh(Pwlpha)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if(0)% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;tfpmN= 64;M= 8;L= 8;Psi0= tf_multiwin(N, M, L, 0, 0, 0);Psi1= tf_multiwin(N, M, L, 0, 0, 1);figure(1);tf_show(Psi0)figure(2);tf_show(Psi1)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end;% TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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