*代码如下
/// <summary>
/// 卷积
/// </summary>
/// <param name="DataArray"></param>
/// <returns></returns>
public static double[] FirFilter(double[] DataArray)
{
double[] fir_b = { 0 , 0.00783604561874200 ,0.00674958378315827, - 0.0449507392221879,
- 0.123639682010026, - 0.133384619257534 ,- 0.0134644579118203 ,0.165757485451534 ,
0.251888142828177 , 0.165757485451534, - 0.0134644579118203 ,- 0.133384619257534 ,
- 0.123639682010026, - 0.0449507392221879, 0.00674958378315827 ,0.00783604561874200
};
double[] result = new double[DataArray.Length];
double SumB;
for (int n = 0; n < DataArray.Length; n++)
{
SumB = 0;
for (int i = 0; i < fir_b.Length; i++)
{
if (n >= i)
{
SumB += fir_b[i] * DataArray[n - i];
}
}
result[n] = SumB;
}
return result;
}
代码中的fir_b为卷积核,有卷积的计算过程可知用什么样的卷积核,就能得到什么样的结果。卷积核又是怎么得到的那?我用的是Matlab
在Matlab中有一个Filter Designer的APP,里边可以根据需要生成各种卷积核。