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

📄 comp_idgt_fb.m

📁 linear time-frequency toolbox
💻 M
字号:
function [f]=comp_idgt_fb(coef,g,a,M)%COMP_IDGT_FB  Filter bank IDGT.%   Usage:  f=comp_idgt_fb(c,g,a,M);%       %   This is a computational routine. Do not call it directly.%%   SEE ALSO: IDGT%   Author : Peter Soenderagaard.% Compute the real length of the transform.N=size(coef,2);W=size(coef,3);L=N*a;b=L/M;gl=length(g);coef=ifft(coef);coef=reshape(coef,M*N,W);gl=length(g);% The fftshift actually makes some things easier.g=fftshift(g);f=zeros(L,W);% Values used to calculate correct splitting.no_split_s=ceil((gl/2/a));no_split_e=floor((L-gl/2)/a);nrange=(0:N-1)';spr=rem(nrange*a-gl/2+L,L)+1;       % Starting pointepr=rem(nrange*a-gl/2+gl-1+L,L)+1;  % ending point.nsplitr=L+1-spr;% Make multicolumn g by replication.gw=repmat(g,1,W);% This covers the the cases when splitting is necessary:Nsplit=[0:no_split_s-1,no_split_e+1:N-1];% This n is one-indexed, to avoid to many +1for n=Nsplit+1    % Rotate the coefficients, duplicate them until they have same  % length as g, and multiply by g.  ff=repmat(circshift(coef((n-1)*M+1:n*M,:),-(n-1)*a+gl/2),gl/M,1).*gw;    % Add the ff vector to f at position sp.  f(spr(n):L,:)=f(spr(n):L,:)+ff(1:nsplitr(n),:);  f(1:epr(n),:)=f(1:epr(n),:)+ff(nsplitr(n)+1:gl,:);    end;% This cover the cases when splitting is not necessary:% This n is one-indexed, to avoid to many +1for n=no_split_s+1:no_split_e+1      % Rotate the coefficients, duplicate them until they have same  % length as g, and multiply by g.  ff=repmat(circshift(coef((n-1)*M+1:n*M,:),-(n-1)*a+gl/2),gl/M,1).*gw;    % Add the ff vector to f at position sp.  f(spr(n):epr(n),:)=f(spr(n):epr(n),:)+ff;  end;% Scale correctly.f=M*f;

⌨️ 快捷键说明

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