首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Savitzky-Golay滤波器(二)

2013-09-13 
Savitzky-Golay滤波器(2)前几天写过一篇介绍 Savitzky-Golay滤波器的文章, 没想到最近做项目还真的用上了。

Savitzky-Golay滤波器(2)
前几天写过一篇介绍 Savitzky-Golay滤波器的文章, 没想到最近做项目还真的用上了。
因此就顺便写了个 C 语言的自动计算生成 SG 滤波器系数的程序。利用这里的代码可以生成任意阶数的 SG 滤波器。对于一些需要动态调整 SG 滤波器系数的场合,这里的代码还是很实用的。 上次的文章中给出了计算 SG 滤波器系数的 matlab 代码。

/** * 计算 Savitzky-Golay 滤波器系数 * SG 滤波器的阶数为 2M+1,多项式的最高次数为 N */gsl_vector* SG_FilterCreate(int M, int N /* Poly Order */){    int i;    gsl_vector *x = gsl_vector_alloc(2 * M + 1);    gsl_vector *y = gsl_vector_alloc(2 * M + 1);    gsl_vector_set_zero(y);    gsl_vector_set(y, M, 1);    for(i= -M; i <= M; i++)    {        gsl_vector_set(x, i + M, i);    }    gsl_vector *c = PolyFit(x, y, N);    gsl_vector_free(x);    gsl_vector_free(y);    gsl_vector *fir = gsl_vector_alloc(2 * M + 1);    for(i = -M; i <= M; i++)    {        gsl_vector_set(fir, i + M, gsl_poly_eval (c->data, N + 1, i));    }    gsl_vector_free(c);    return fir;}


热点排行