📄 comp_gdgt.m
字号:
function [c,Ls]=comp_gdgt(f,g,a,M,L,c_t,c_f,c_w,timeinv)%COMP_GDGT Compute generalized DGT% Usage: c=comp_gdgt(f,g,a,M,L,c_t,c_f,c_w,timeinv);%% Input parameters:% f : Input data% g : Window function.% a : Length of time shift.% M : Number of modulations.% L : Length of transform to do.% c_t : Centering in time of modulation.% c_f : Centering in frequency of modulation.% c_w : Centering in time of window.% timeinv : Should we compute a time invariant Gabor system.% Output parameters:% c : M*N array of coefficients.% Ls : Length of input signal.%% AUTHOR : Peter Soendergaard.Lwindow=size(g,1);W=size(f,2);N=L/a;% Preprocess to handle c_f different from 0.if (c_f~=0) halfmod=exp(-2*pi*i*c_f*(0:L-1).'/M); f=f.*repmat(halfmod,1,W);end;if Lwindow<L % Do the filter bank algorithm c=comp_dgt_fb(f,g,a,M);else % Do the factorization algorithm b=L/M; N=L/a; W=size(f,2); % Get the factorization of the window. gf=comp_wfac(g,a,M); % Compute the window application and the DFT modulation. c=fft(comp_dgt_fw(f,gf,a,M))/sqrt(M); end;if timeinv c=reshape(c,M,N,W); c=phaselock(c,a); c=reshape(c,M,N*W);end;% Post-process if c_t is different from 0.if (c_t~=0) % The following is necessary because REPMAT does not work for % 3D arrays. halfmod=repmat(exp(-2*pi*i*c_t*((0:M-1)+c_f).'/M),1,N*W); c=c.*halfmod;end;c=reshape(c,M,N,W);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -