⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lsltest.cpp

📁 Adaptive digital Filters in C++
💻 CPP
字号:
// lsltest.cpp		Test the LSLFilter class

//		input data is from named file or STDIN
//		output is to a named file or STDOUT

static const char rcsid[]= "@(#)lsltest.c++	1.1 15:59:34 3/31/94   EFC";

#define PROGRAM "lsltest"
#define REV_LEV "V1.1"

#include <stdlib.h>

#include <standio.hpp>

#include <getargs.h>

#include "lslfilter.hpp"

// #define DEBUG

#ifdef DEBUG
#include <heartbeat.hpp>
#endif


int menu = 0;
int verbose = 0;
double lambda = 0.98;
int order = 4;

ARG	Argtab[] =
{
	{ 'l', REAL, (int *)&lambda,	"lambda coefficient"	},
	{ 'o', INTEGER, &order,		"filter order"		},
	{ 'v', BOOLEAN, &verbose,	"verbose execution"	},
	{ '-', BOOLEAN, &menu,		"display this list"	}
};

#define TABSIZE     ( sizeof(Argtab) / sizeof(ARG) )


int main(int argc, char **argv)
{

        float x, y;
        
	argc = getargs( argc, argv, Argtab, TABSIZE);
        
        if (menu)
	{
		menu = 0;
                cerr << PROGRAM << '\t' << REV_LEV << '\n';
		pr_usage( Argtab, TABSIZE);
		exit(1);
	}


	LSLFilter filter(order, lambda);

        if ( !filter )
        {
        	cerr << PROGRAM << " error, unable to create filter\n";
                exit(1);
       }
       
	if ( verbose )
        {
		cerr << PROGRAM << " filter order: " << filter.order() << endl;
        }

        Stdin fin(&argc, argv);

        if ( !fin )
        {
                cerr << PROGRAM << " unable to open input file " << argv[1] <<endl;
                exit(1);
        }


        Stdout fout(&argc, argv);

        if ( !fout )
        {
              cerr << PROGRAM << " unable to open output file " << argv[1] << endl;
                exit(1);
        }



#ifdef DEBUG
	HeartBeat h;
        int k = 0;
        cerr << "Starting filter\n";
#endif

	while ( fin )
        {
		fin >> x;
                if ( fin.eof() || fin.fail() )
                		break;

#ifdef DEBUG
		k++;
		h.tick();
#endif                
               x >> filter >> y;

                              
               fout << y << '\n';
        }
        
#ifdef DEBUG
	cerr << '\n' << k << " points filtered\n";       
#endif

	return 0;

}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -