This is kaiser.c in view mode; [Download] [Up]
#include <math.h> /*c----------------------------------------------------------------------- c subroutine: kaiser c kaiser window c----------------------------------------------------------------------- c subroutine kaiser(nf, w, n, ieo, beta) c c nf = filter length in samples c w = window array of size n c n = filter half length=(nf+1)/2 c ieo = even odd indicator--ieo=0 if nf even c beta = parameter of kaiser window c */ kaiser(nf,w,n,ieo,beta) float *w,beta; { float xind,xi,bes,ino(); int i; bes = ino(beta); xind = (float)(nf-1)*(float)(nf-1); for(i=0; i<n; i++) { // do 10 i=1,n xi = i; if (!ieo) xi = xi + 0.5; xi = 4.*xi*xi; w[i] = ino(beta*sqrt(1.-xi/xind)); w[i] = w[i]/bes; } } /*c c----------------------------------------------------------------------- c function: ino c bessel function for kaiser window c----------------------------------------------------------------------- c */ float ino(x) float x; { float y,t,e,de,xi,sde; int i; y = x/2.; t = 1.e-08; e = 1.; de = 1.; // do 10 i=1,25 for(i=1; i<= 25; i++) { xi = i; de = de*y/xi; sde = de*de; e = e + sde; if ((e*t-sde) > 0) break; } return(e); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.