4. 虚数 j
得到ω数组后就是处理 j 了,j
是单位虚数,j的平方为-1。积分公式中F(ω)除了一个 j,而 j 在频域中表示相移,每乘一个 j
就逆时针旋转了90度,每除一个j,顺时针旋转90度。也就是说,时域的一次积分转到频域后需要顺时针旋转90度,而二次积分需要顺时针旋转180度。
5. 进行积分的频域变换
频域变换就是第二步中FFT的结果(即1024个复数)依次除以ω数组。
6. 进行积分的相位变换
第4步中提到一次积分顺时针旋转90度,而二次积分顺时针旋转180度。相位变换就是把第5步得到的复数数组每个复数都旋转,假设实部为real,虚部为imag,一次积分时虚部等于实部imag=real,实部等于负虚部real=-imag;二次积分时实部等于负实部real=-real,虚部等于负虚部imag=-imag
7. 滤波
此时如果不进行滤波直接跳到第8步就能得到时域的二次积分结果。如果想把其中的低频和高频部分滤除,则可以将第6步得到的复数数组中的开头几个复数和最后几个复数直接置零,假设需要滤除Fmin=10Hz以下的部分,先计算出10Hz大概是哪个点ni=Fim/df+1,10/0.977+1≈11,即把第6步得到的复数数组前11个复数都置位0,滤高频同理。
补充:以上方法其实就是用了矩形窗函数,如果想要达到不同的滤波效果,可以考虑其他窗函数如汉宁窗、海明窗、高斯窗等等。
8. IFFT返回时域
最后通过IFFT将处理完的复数数组转回时域,得到积分结果。
附上MATLAB代码,C语言代码点击下面链接