Metropoli BBS
VIEWER: okmesh.c MODE: TEXT (ASCII)
/***************************************************************************
 *		  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 <math.h>
#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;
}



[ RETURN TO DIRECTORY ]