【问题标题】:Why is my resultant signal not appearing correctly? MATLAB为什么我的合成信号没有正确显示? MATLAB
【发布时间】:2016-03-02 16:50:03
【问题描述】:

我在 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结果的实部并乘以2。
  • @AndreasH。是不是因为我们过滤掉了基波的谐波,所以我们得到了一半的幅度?
  • @AndreasH。我也没有看到任何负频率,是ifft 造成的吗?
  • 真实信号在频域中总是对称的...

标签: matlab plot signal-processing fft lowpass-filter


【解决方案1】:

要获得严格实数的结果,IFFT 的输入必须是复共轭对称的。如果这些 bin 中的任何一个非零,那么在 bin N/2 以上(或 bin 0 以下)截断 FFT 部分会破坏这种对称性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多