📄 psech.m
字号:
function [g,tfr]=psech(L,tfr)%PSECH Sampled, periodized hyperbolic secant.% Usage: g=psech(L);% g=psech(L,tfr);% % Input parameters:% L : Length of vector.% tfr : ratio between time and frequency support.% Output parameters:% g : The periodized Gaussian(s).%% PSECH(L,tfr) computes samples of a periodized hyperbolic secant.% The function returns a regular sampling of the periodization% of the function sech(pi*x)%% The returned function has norm == 1.%% The parameter tfr determines the ratio between the effective% support of g and the effective support of the DFT of g. If tfr>1 then% g has a wider support than the DFT of g.%% PSECH(L) does the same setting tfr=1.%% The function is whole-point even. This implies that FFT(PSECH(L,tfr))% is real for any L and tfr.%% If this function is used to generate a window for a Gabor frame, then% the window giving the smalles frame bound ratio is generated by% PSECH(L,a*M/L);% % SEE ALSO: PGAUSS, PBSPLINE, PHERM% % REFERENCES:% A. J. E. M. Janssen and T. Strohmer. Hyperbolic secants yield Gabor% frames. Appl.Comput.Harmon.Anal., 12(2):259-267, 2002.% % 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/>.error(nargchk(1,2,nargin));if nargin==1 tfr=1;end;if size(L,1)>1 || size(L,2)>1 error('L must be a scalar');end;if rem(L,1)~=0 error('L must be an integer.')end;% Parse tfr and order.if sum(1-(size(tfr)==1))>1 error('tfr must be a scalar or vector');end;safe=12;g=zeros(L,1);sqrtl=sqrt(L);w=tfr;% Outside the interval [-safe,safe] then sech(pi*x) is numerically zero.nk=ceil(safe/sqrt(L/sqrt(w)));lr=(0:L-1).';for k=-nk:nk g=g+sech(pi*(lr/sqrtl-k*sqrtl)/sqrt(w));end;% Normalize it.g=g*sqrt(pi/(2*sqrt(L*w)));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -