一维离散信号的滤波

1、被滤波的元素的大小应该为周期的整数倍

例如,以4个点为周期的信号,包含20个元素,共5组。

2、进行离散傅里叶变换

var a = b.Select(d => new Complex(d, 0)).ToArray();
Transform.FourierForward(a);

3、去除频域分量

for (var i = 5; i < 20; i += 5)
{
    a[i] = 0;
}

4、进行傅里叶反变换

Transform.FourierInverse(a);
var c = a.Select(d => d.Real).ToArray();

5、滤波前

var b = new double[]
    {
        99, 101, 102, 100, 
        99, 101, 102, 100, 
        199, 201, 202, 200, 
        99, 101, 102, 100, 
        -1, 1, 2, 0
    };

6、滤波后

原文地址:https://www.cnblogs.com/yao2yao4/p/3219619.html