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

📄 projdual.m

📁 Matlab时频分析工具箱,希望能对大家有所帮助啊
💻 M
字号:
function gd=projdual(gm,g,a,M,L);%PROJDUAL   Dual window by projection.%   Usage:  gd=projdual(gm,g,a,M)%           gd=projdual(gm,g,a,M,L)%%   Input parameters:%         gm    : Window to project.%         g     : Window function.%         a     : Length of time shift.%         M     : Number of modulations.%         L     : Total length of vectors (optional).%   Output parameters:%         gd    : Dual window.%%   PROJDUAL(gm,g,a,M) calculates the dual window of the Gabor frame given%   by g, a and M closest to gm measured in the l^2 norm.%%   PROJDUAL(gm,g,a,M,L) first extends the windows g and gm to length L.%%   SEE ALSO:  CANDUAL, CANTIGHT, GFDUALNORM, FIREXTEND% 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/>.%   Author : Peter Soendergaard if nargin<3  error('To few input parameters.');end;if nargin>5  error('To many input parameters.');end;assert_squarelat(a,M,1,'PROJDUAL',1);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;wasrow=0;if size(gm,2)>1  if size(gm,1)>1    error('gm must be a vector');  else    % gm was a row vector.    wasrow=1;    gm=gm(:);  end;end;if nargin<5  [b,N,L]=assert_L(Ls,Lwindow,[],a,M,'PROJDUAL');else  [b,N,L]=assert_L(Ls,Lwindow,L,a,M,'PROJDUAL');  g1=fir2iir(g1,L);  g2=fir2iir(g2,L);end;% Calculate the canonical dual.gamma0=candual(g,a,M);  % Get the residualgres=gm-gamma0;% Calculate parts that lives in span of adjoint lattice.gk=idgt(dgt(gres,gamma0,M,a),g,M)*M/a;% Construct dual windowgd=gamma0+(gres-gk);if wasrow  gd=gd.';end;

⌨️ 快捷键说明

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