为什么我的结果信号没有正确显示?软件

Why is my resultant signal not appearing correctly? MATLAB

我在下面用 MATLAB 编写了一些代码来过滤噪声信号(noise_f 是噪声信号,它是一个 1 x 256 向量):

s_nf = size(noise_f);
size_f = s_nf(2); 

lp_tresh = ceil((2/3)*size_f);  
lp_f = zeros(1,256); 
for n = 1:lp_tresh
    lp_f(n) = noise_f(n); 
end
subplot(4,3,7);
plot(abs(lp_f)); title('LowPass Filter Result');

这是噪声信号的时域图像:

下面是这个信号的时域分析:

绘制低通滤波器的结果后,我得到:

现在,我将 ifft 应用到 1 x 256 代表过滤信号的向量上,出于某种原因,我得到了这张图片:

有人可以向我解释如何获得过滤后信号的正确图吗?所有帮助和建议将不胜感激!

要获得严格实数的结果,IFFT 的输入必须是复共轭对称的。如果这些 bin 中的任何一个不为零,则砍掉 bin N/2(或 bin 0 以下)上方的 FFT 部分会破坏该对称性。

因此,如果低通滤波器的截止频率低于 bin N/2(代表 Fs/2),则它只能在频域中工作。然后在进行IFFT之前确保过滤结果是共轭对称的。