📄 idwilt.m
字号:
function [f]=idwilt(c,g,Ls)%IDWILT Inverse discrete Wilson transform.% Usage: f=idwilt(c,g);% f=idwilt(c,g,Ls);%% Input parameters:% c : M*N array of coefficients.% g : Window function.% Ls : Final length of function (optional)% Output parameters:% f : Input data%% IDWILT(c,g) computes an inverse discrete Wilson transform with window g.% The number of channels is deduced from the size of the coefficient array c.%% g must be whole-point even.%% IDWILT(f,g,Ls) does the same, but cuts of zero-extend the final% result to length Ls.%% SEE ALSO: DWILT, DGT, WILORTH%% REFERENCES:% H. Bölcskei, H. Feichtinger, K. Gröchenig, and F. Hlawatsch. Discrete-time% Wilson expansions. In Proc. IEEE-SP 1996 Int. Sympos. Time-Frequency% Time-Scale Analysis, pages 525-528, jun 1996.% % Y.-P. Lin and P. Vaidyanathan. Linear phase cosine modulated maximally% decimated filter banks with perfect reconstruction. IEEE Trans. Signal% Process., 43(11):2525-2539, 1995.% Author : Peter Soendergaard.error(nargchk(2,3,nargin));if size(g,2)>1 if size(g,1)>1 error('g must be a vector'); else % g was a row vector. g=g(:); end;end;%if ~iseven(g)% error('g must be whole point even.See help on pgauss.');%end;% If input is real, and window is real, output must be real as well.inputwasreal = (isreal(g) && isreal(c));Lwindow=size(g,1);wasrow=0;M=size(c,1)/2;N=2*size(c,2);W=size(c,3);L=M*N;Lwindow=size(g,1);% Length of window must be dividable by M.if rem(Lwindow,M)~=0 error('Length of window must be dividable by M.')end;% Call computational subroutine.a=M;c=comp_idwilt(reshape(c,M*N,W),a,M);f=comp_idgt(c,g,a,2*M,L);% Check if Ls was specified.if nargin==3 f=postpad(f,Ls);else Ls=L;end;f=comp_sigreshape_post(f,Ls,wasrow,[0; W]);% Clean signal if it is known to be realif inputwasreal f=real(f);end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -