testfilter.c File Reference

Test hanning filter implementation. More...

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <libgen.h>
#include <utils.h>
#include <filter.h>
Include dependency graph for testfilter.c:

Go to the source code of this file.

Defines

#define _GNU_SOURCE
 GNU extensions.

Functions

void show_usage (char *pgm)
 C prototypes.
int main (int argc, char **argv)
 Main program.

Detailed Description

Test hanning filter implementation.

Definition in file testfilter.c.


Define Documentation

#define _GNU_SOURCE

GNU extensions.

Definition at line 59 of file testfilter.c.


Function Documentation

int main ( int  argc,
char **  argv 
)

Main program.

Parameters:
[in] argc Number of command-line arguments.
[in] argv Vector of command-line argument strings.
Returns:
Status.

Definition at line 98 of file testfilter.c.

References alloc_error(), banner(), FALSE, filter(), show_usage(), and TRUE.

00099 {
00107   int i;
00108 
00109   /* Command-line arguments variables */
00110   char filein[500]; /* Input filename */
00111   char fileout[500]; /* Output filename */
00112   FILE *inptr;
00113   FILE *outptr;
00114 
00115   int end;
00116   int numval;
00117   int istat;
00118   
00119   double *invect;
00120   double *outvect;
00121   double value;
00122   int width = 60;
00123 
00124   /* Print BEGIN banner */
00125   (void) banner(basename(argv[0]), "1.0", "BEGIN");
00126 
00127   /* Get command-line arguments and set appropriate variables */
00128   if (argc <= 1) {
00129     (void) show_usage(basename(argv[0]));
00130     (void) banner(basename(argv[0]), "ABORT", "END");
00131     (void) abort();
00132   }
00133   else
00134     for (i=1; i<argc; i++) {
00135       if ( !strcmp(argv[i], "-i") )
00136         (void) strcpy(filein, argv[++i]);
00137       else if ( !strcmp(argv[i], "-o") )
00138         (void) strcpy(fileout, argv[++i]);
00139       else if ( !strcmp(argv[i], "-w") )
00140         (void) sscanf(argv[++i], "%d", &width);
00141       else {
00142         (void) fprintf(stderr, "%s:: Wrong arg %s.\n\n", basename(argv[0]), argv[i]);
00143         (void) show_usage(basename(argv[0]));
00144         (void) banner(basename(argv[0]), "ABORT", "END");
00145         (void) abort();
00146       }
00147     }
00148 
00149   inptr = fopen(filein, "r");
00150   if (inptr == NULL) {
00151     (void) fprintf(stderr, "Cannot open input file : %s.\n", filein);
00152     (void) abort();
00153   }
00154   outptr = fopen(fileout, "w");
00155   if (outptr == NULL) {
00156     (void) fprintf(stderr, "Cannot open output file : %s.\n", fileout);
00157     (void) abort();
00158   }
00159   (void) fprintf(stdout, "Filter width=%d\n", width);
00160 
00161   end = FALSE;
00162   numval = 0;
00163   invect = NULL;
00164   while (end == FALSE) {
00165     istat = fscanf(inptr, "%lf", &value);
00166     if ( istat != 1 )
00167       /* EOF encountered or bad data */
00168       end = TRUE;
00169     else {
00170       numval++;
00171       invect = (double *) realloc(invect, numval * sizeof(double));
00172       if (invect == NULL) alloc_error(__FILE__, __LINE__);
00173       invect[numval-1] = value;
00174     }
00175   }
00176 
00177   outvect = (double *) calloc(numval, sizeof(double));
00178   if (outvect == NULL) alloc_error(__FILE__, __LINE__);
00179   
00180   filter(outvect, invect, "hanning", width, 1, 1, numval);
00181 
00182   for (i=0; i<numval; i++)
00183     (void) fprintf(outptr, "%d %lf %lf\n", i, invect[i], outvect[i]);
00184 
00185   (void) fclose(inptr);
00186   (void) fclose(outptr);
00187 
00188   (void) free(invect);
00189   (void) free(outvect);
00190   
00191   /* Print END banner */
00192   (void) banner(basename(argv[0]), "OK", "END");
00193 
00194   return 0;
00195 }

void show_usage ( char *  pgm  ) 

C prototypes.

Local Subroutines.

Show usage for program command-line arguments.

Parameters:
[in] pgm Program name.

Definition at line 201 of file testfilter.c.

00201                            {
00206   (void) fprintf(stderr, "%s: usage:\n", pgm);
00207   (void) fprintf(stderr, "-i: input file\n");
00208   (void) fprintf(stderr, "-o: output file\n");
00209   (void) fprintf(stderr, "-w: filter width\n");
00210 
00211 }


Generated on 12 May 2016 for DSCLIM by  doxygen 1.6.1