关于C代码实现差分方程滤波filter

来源:互联网 发布:小区网络装iptv服务器 编辑:程序博客网 时间:2024/06/06 00:59

很久之前就已经把代码编译好了,没有时间整理:今天整理一下,已备后查;

整个差分方式的实现过程如下:公式不好编辑:


matlab实现了以后,用C照着写不是什么难事,找到2种实现方法,一种是照着filter差分的方式去写,误差说是在10^-6,另一种说是没有误差,实现过程没有去仔细研究,觉得小数点后面6位的误差也是可以的了。

代码可见:点击打开链接

核心 过程不过是两个for循环:

for (i=0;i<DataLen;i++)
{
double sum_b_x=0;
double sum_a_y=0;
k=0;
for( j=i;j<=i+ord;j++)
{
sum_b_x=sum_b_x+bz1[k]*up[j];
/*printf("bz1[%d]*up[%d]=\n",k,j);*/
k++;
}
/*printf("%f\n",sum_b_x);*/
//double sum_a_y=0;
k=0;
for( j=i;j<=i+ord-1;j++)
{
sum_a_y=sum_a_y+aa[k]*yp[j];
/*printf("aa[%d]*yp[%d]=\n",k,j);*/
k++;
}
/*printf("%f\n",sum_a_y);*/
yp[i+ord]=sum_b_x-sum_a_y;
/*printf("---%d\n,%e\n",i+ord,yp[i+ord]);*/
}

0 0
原创粉丝点击