zoukankan      html  css  js  c++  java
  • matlab中滤波器函数filter的c语言实现

    参考出处:https://wenku.baidu.com/view/6a8eeeee9fc3d5bbfd0a79563c1ec5da50e2d6e5.html

    实现:

    MATLAB的filter滤波函数为:

    a=[1.0000;
    0;
    0.4860;
    0;
    0.0177];
    b=[0.0940;
    0.3759;
    0.5639;
    0.3759;
    0.0940];

    SignalFilter=filter(b,a,OriginalSignal);

    C代码的filter滤波程序为:

    int OriginalSignal[100];
    float a[5]={1,0,0.4860,0,0.0177};
    float b[5]={0.0940,0.3759,0.5639,0.3759,0.0940};

    //滤波 5阶的
    SignalFilter[0]=b[0]*OriginalSignal[0];
    SignalFilter[1]=b[0]*OriginalSignal[1] + b[1]*OriginalSignal[0] - a[1]*SignalFilter[0];
    SignalFilter[2]=b[0]*OriginalSignal[2] + b[1]*OriginalSignal[1] + b[2]*OriginalSignal[0] - a[1]*SignalFilter[1]- a[2]*SignalFilter[0] ;
    SignalFilter[3]=b[0]*OriginalSignal[3] + b[1]*OriginalSignal[2] + b[2]*OriginalSignal[1] + b[3]*OriginalSignal[0]- a[1]*SignalFilter[2]- a[2]*SignalFilter[1]- a[3]*SignalFilter[0] ;

    for (int i=4;i<100;i++)
    {
    SignalFilter[i]=b[0]*OriginalSignal[i] + b[1]*OriginalSignal[i-1] + b[2]*OriginalSignal[i-2] + b[3]*OriginalSignal[i-3]+ b[4]*OriginalSignal[i-4]- a[1]*SignalFilter[i-1]- a[2]*SignalFilter[i-2] - a[3]*SignalFilter[i-3] - a[4]*SignalFilter[i-4] ;
    }

    SignalFilter结果相同

  • 相关阅读:
    0603学术诚信和职业道德
    0602第二个冲刺
    0525《构建之法》8、9、10章读后感
    0525Sprint回顾
    实验三进程调度
    解决提问的问题
    阅读《构建之法》第13-17章
    阅读:第10、11、12章
    作业5.2(封装及测试)
    作业5.1
  • 原文地址:https://www.cnblogs.com/rjjhyj/p/9254290.html
Copyright © 2011-2022 走看看