C# FIR滤波器在C语言中的实现#

C# FIR滤波器在C语言中的实现#,c#,signal-processing,C#,Signal Processing,目前,我正试图在波形文件上实现FIR低通滤波器。FIR系数,其中使用40阶MATLAB获得。现在我需要用C#实现FIR算法,我发现很难实现它 有什么帮助吗 谢谢,试试这个。有帮助吗 static void Main() { var bb = new List<double> { 1, 2, 3, 4 }; var xx = new List<double> { 3, 3, 4, 5 }; var yy = func_FIR(bb, xx);

目前,我正试图在波形文件上实现FIR低通滤波器。FIR系数,其中使用40阶MATLAB获得。现在我需要用C#实现FIR算法,我发现很难实现它

有什么帮助吗


谢谢,试试这个。有帮助吗

static void Main()
{
    var bb = new List<double> { 1, 2, 3, 4 };
    var xx = new List<double> { 3, 3, 4, 5 };

    var yy = func_FIR(bb, xx);

    for (int i = 0; i < yy.Count; i++)
    {
        Console.WriteLine("y[{0}] = {1}",i,yy[i]);
    }

}

public static List<double> func_FIR(List<double> b, List<double> x)
{
    //y[n]=b0x[n]+b1x[n-1]+....bmx[n-M]

    var y = new List<double>();

    int M = b.Count;
    int n = x.Count;

    double t = 0.0;

    for (int j = 0; j < n; j++)
    {
        for (int i = 0; i < M; i++)
        {
            t += b[i] * x[n - i-1];
        }
        y.Add(t);    
    }

    return y;
}
static void Main()
{
var bb=新列表{1,2,3,4};
var xx=新列表{3,3,4,5};
var yy=func_FIR(bb,xx);
对于(int i=0;i
这个怎么样:

private static double[] FIR(double[] b, double[] x)
{
    int M = b.Length;
    int n = x.Length;
    //y[n]=b0x[n]+b1x[n-1]+....bmx[n-M]
    var y = new double[n];
    for (int yi = 0; yi < n; yi++)
    {
        double t = 0.0;
        for (int bi = M-1; bi >=0; bi--)
        {
            if (yi - bi < 0) continue;

            t += b[bi] * x[yi - bi];
        }
        y[yi] = t;    
    }
    return y;
}
专用静态双[]FIR(双[]b,双[]x)
{
int M=b.长度;
int n=x.长度;
//y[n]=b0x[n]+b1x[n-1]+..bmx[n-M]
var y=新的双精度[n];
for(int yi=0;yi=0;bi--)
{
如果(yi-bi<0)继续;
t+=b[bi]*x[yi-bi];
}
y[yi]=t;
}
返回y;
}

您有什么特别的困难?我很难实现这个系列:y[n]=b0x[n]+b1x[n-1]+..bmx[n-M],其中y[n]是输出答案,x[n]是我不知道如何在C中实现的输入吗?thanksit做了很多,因为我会尝试一下,看看它是否有效thanksi我尝试了代码,但它不起作用,或者我做错了什么。。。我的参数是:220500个样本,40阶(FIR滤波器)。是否有机会根据我的解决方案调整上述编码?