c#写一个FIR滤波器
时间: 2023-10-29 12:07:15 浏览: 45
以下是一个简单的C# FIR滤波器示例代码,使用的是基于窗口方法的低通滤波器:
```csharp
public class FirFilter
{
private double[] _coefficients;
private double[] _delayLine;
public FirFilter(double[] coefficients)
{
_coefficients = coefficients;
_delayLine = new double[coefficients.Length];
Array.Clear(_delayLine, 0, _delayLine.Length);
}
public double Filter(double input)
{
double output = 0.0;
_delayLine[0] = input;
for (int i = 0; i < _coefficients.Length; i++)
{
output += _coefficients[i] * _delayLine[i];
}
for (int i = _coefficients.Length - 1; i > 0; i--)
{
_delayLine[i] = _delayLine[i - 1];
}
return output;
}
}
```
使用示例:
```csharp
double[] coefficients = { 0.1, 0.2, 0.3, 0.4, 0.3, 0.2, 0.1 };
FirFilter filter = new FirFilter(coefficients);
double[] inputSignal = { 0.5, 0.8, 0.3, -0.2, -0.1, 0.3, 0.6, 0.4 };
double[] outputSignal = new double[inputSignal.Length];
for (int i = 0; i < inputSignal.Length; i++)
{
outputSignal[i] = filter.Filter(inputSignal[i]);
}
```
在上面的代码中,我们创建了一个FIR滤波器实例,并将其初始化为具有给定系数的低通滤波器。然后,我们使用输入信号中的每个样本来过滤输入信号,输出结果存储在输出信号数组中。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)