Bob,

I have used the code below sometime ago. The coefficients can be
calculated using the method described in:

http://www.wwc.edu/~frohro/R2_DSP/R2-DSP.html

Place the coefficients in a text file with one coefficient per line.

73,

-- Edson, pu1jte, n1vtn, 7n4ncl

/* --- fir.h --- */

struct fir_filter {
   int order;
   double h[1024];
   double w[1024];
};

struct fir_filter * new_fir_filter( char * );
double do_fir( struct fir_filter *, double );

/* --- fir.c --- */

#include <stdio.h>
#include <stdlib.h>
#include "fir.h"

struct fir_filter * new_fir_filter( char * filter_coefficients )
{
   FILE *fp;
   int i;
   char buf[80];
   struct fir_filter * filter;
   double value;

   fp = fopen( filter_coefficients, "r" );
   if ( fp == NULL ) {
      perror( filter_coefficients );
      exit(1);
   }

   filter = (struct fir_filter *)malloc( sizeof( struct fir_filter ) );
   if ( filter == NULL ) {
      perror( "Unable to allocate memory for filter" );
      exit(1);
   }

   for ( i = 0; fgets( buf, sizeof(buf) - 1, fp ) > 0; i++ )  {
      sscanf( buf, "%lf", &value );
      filter->h[i] = value;
   }
   filter->order = i;

   fprintf( stderr, "Loaded %d FIR Filter Coefficients from %s\n", i,
filter_coe
fficients );
   return filter;
}

inline double do_fir( struct fir_filter * filter, double input )
{
   double output;
   int i;

   for ( i = 0; i < filter->order; i++ )
      filter->w[i] = filter->w[i+1];

   filter->w[filter->order] = input;
   output = 0.0;

   for ( i = 0; i <= filter->order; i++ )
      output += filter->h[i] * filter->w[i];

   return output;
}








------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get fast access to your favorite Yahoo! Groups. Make Yahoo! your home page
http://us.click.yahoo.com/dpRU5A/wUILAA/yQLSAA/ELTolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/soft_radio/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 




Reply via email to