/*************************************************************************** * Copyright (C) 1994 Charles P. Peterson * * 4007 Enchanted Sun, San Antonio, Texas 78244-1254 * * Email: Charles_P_Peterson@fcircus.sat.tx.us * * * * This is free software with NO WARRANTY. * * See gfft.c, or run program itself, for details. * * Support is available for a fee. * *************************************************************************** * * Program: gfft--General FFT analysis * File: okmesh.c * Purpose: Generate a mesh vector for smoothing * Author: Charles Peterson (CPP) * History: 22-January-1994 CPP; Created. * Comment: If LogX mode, mesh is logarithmic */ #include #include "gfft.h" #include "settings.h" double *ok_mesh (double nyquist_frequency, double delta_frequency) { double *mesh = NULL; double delta = 1; double base_log = 0; long i; if (SmoothingSegments != NO_SMOOTHING) { mesh = gmalloc (sizeof(double) * SmoothingSegments, NOTHING_SPECIAL); if (LogX) { delta = log (nyquist_frequency / delta_frequency) / SmoothingSegments; base_log = log (delta_frequency); mesh[0] = delta_frequency; } else { delta = nyquist_frequency / SmoothingSegments; mesh[0] = delta; } for (i = 2; i < SmoothingSegments; i++) { if (LogX) { mesh[i-1] = exp (base_log + delta * i); } else { mesh[i-1] = delta * i; } } mesh[i-1] = nyquist_frequency; /* Last value must be exact */ } return mesh; }