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

📄 comp_wfac.m

📁 Matlab时频分析工具箱,希望能对大家有所帮助啊
💻 M
字号:
function gf=comp_wfac(g,a,M)%COMP_WFAC  Compute window factorization%  Usage: gf=comp_wfac(g,a,M);%%   REFERENCES:%     T. Strohmer. Numerical algorithms for discrete Gabor expansions. In%     H. G. Feichtinger and T. Strohmer, editors, Gabor Analysis and%     Algorithms, chapter 8, pages 267-294. Birkhäuser, Boston, 1998.%     %     P. L. Søndergaard. An efficient algorithm for the discrete Gabor%     transform using full length windows. IEEESignalProcess.Letters,%     submitted for publication, 2007.% This program is free software: you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation, either version 3 of the License, or% (at your option) any later version.% % This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% GNU General Public License for more details.% % You should have received a copy of the GNU General Public License% along with this program.  If not, see <http://www.gnu.org/licenses/>.L=size(g,1);R=size(g,2);N=L/a;b=L/M;c=gcd(a,M);p=a/c;q=M/c;d=N/q;gf=zeros(p,q*R,c,d);% Set up the small matrices% The w loop is only used for multiwindows, which should be a rare occurence.% Therefore, we make it the outermostif p==1    % Integer oversampling  if (c==1) && (d==1) && (R==1)    % --- Short time Fourier transform of single signal ---    % This is used for spectrograms of short signals.                for l=0:q-1	        gf(1,l+1,1,1)=g(mod(-l,L)+1);    end;  else    for w=0:R-1      for s=0:d-1	for l=0:q-1	  	  gf(1,l+1+q*w,:,s+1)=g((1:c)+mod(-l*a+s*p*M,L),w+1);	end;      end;    end;  end;else  % Rational oversampling  for w=0:R-1    for s=0:d-1      for l=0:q-1	for k=0:p-1	    	  gf(k+1,l+1+q*w,:,s+1)=g((1:c)+c*mod(k*q-l*p+s*p*q,d*p*q),w+1);	end;      end;    end;  end;end;% dft themif d>1  gf=fft(gf,[],4);end;% Scale by the sqrt(M) comming from Walnuts representationgf=gf*sqrt(M);gf=reshape(gf,p*q*R,c*d);

⌨️ 快捷键说明

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