C# FIR滤波器在C语言中的实现#
目前,我正试图在波形文件上实现FIR低通滤波器。FIR系数,其中使用40阶MATLAB获得。现在我需要用C#实现FIR算法,我发现很难实现它 有什么帮助吗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);
谢谢,试试这个。有帮助吗
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滤波器)。是否有机会根据我的解决方案调整上述编码?