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

📄 kalman_demo.c

📁 This package implements a Kalman filter as described in the paper "A Statistical Algorithm for Esti
💻 C
字号:
static char *rcsid = "$Id: kalman_demo.c,v 1.1 1996/12/13 22:23:29 kint Exp $";/* kalman_demo.c:  demonstrates Kalman filter using canned data * * Kalman functions used: * *   kalman_initialize: initializes Kalman filter for a sensor * *   kalman_filter: runs Kalman filter for a sensor * * Rick Kint * ITS Project, U of Washington */#include <stdio.h>/* included for optarg defs *///#include <unistd.h>#include "kalman.h"#define LINELEN  80   /* function declarations */void usage();/* default values */char *default_data_file_name = "kalman.dat";    int main(int argc, char **argv){    char         *data_file_name;  /* name of data file */    kalman_t     k;                /* kalman state struct */    FILE         *data_file;       /* data file */    char         line[LINELEN];    /* line read from data file */    int          volume,           /* volume read from file */                 iteration;        /* current filter iteration */    double       occupancy,        /* occupancy read from file */                 speed,            /* speed calculated by filter */                 length;           /* length calculated by filter */    int          valid;            /* flag: is Kalman estimate usable? */    extern char  *optarg;          /* for getopt: arg of option */    int          option;           /* char returned by getopt */        /* set defaults */    data_file_name = default_data_file_name;    /* parse CL args, if any */    while ((option = getopt(argc, argv, "f:")) != EOF)    {	switch(option)	{	  case 'f':	    data_file_name = optarg;	    break;	  default:	    usage();	    exit(1);	}    }    /* open data file, exit on failure */    data_file = fopen(data_file_name, "r");    if (!data_file)    {	fprintf(stderr, "could not open data file %s", data_file_name);	perror("");	exit(1);    }    /* initializations */    kalman_initialize(&k);    iteration = 0;    /* read through data file, printing results in format:     *   iteration: volume occupancy speed length valid-string     */    while (fgets(line, LINELEN, data_file))    {	sscanf(line, "%d %lf", &volume, &occupancy);	valid = kalman_filter(&k, volume, occupancy, &speed, &length);	if (valid)		printf("%3d: vol = %5d veh/hr, occ = %5.1f%%, speed = %6.2f mph, length = %6.2f ft\n",		       iteration, volume, occupancy, speed, length);	else		printf("%3d: no speed estimate available\n", iteration);	iteration++;    }    fclose(data_file);}/* * usage * * print usage message */void usage(){    fprintf(stderr, "Usage: kalman_demo [-f data_file] [-v]\n");    fprintf(stderr, "\t data_file = file containing sample data (default is %s\n",default_data_file_name);    fprintf(stderr, "\t-v = verbose\n");}    

⌨️ 快捷键说明

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