从低通到带通

信息处理 matlab 频率响应 带通
2022-02-01 21:12:57

我必须做两次频移:

  • 第一种:将低通滤波器转换为高通滤波器

    我以这种方式实现了它:

h_hpf=h_lpf.*exp(j*pi*(0:N))
  • 第二个:将低通滤波器转换为以为中心的带通滤波器。π/2

    我以这种方式实现了它:

h_bpf=h_lpf.*exp(j*pi/2*(0:N))

我使用 fvtool() 命令来显示频率响应,并且我观察到 h_hpf 的频率响应也在负频率轴上复制,而 h_bpf 的频率响应不会发生这种情况。

实际上,h_bpf 的频率响应只出现在正频率轴上,而负轴上的副本没有出现。

此外,它的脉冲响应 h_hbf 具有复数值,所以我认为正确的移位是:

h_bpf=h_lpf.*(exp(j*pi/2*(0:N))+exp(-j*pi/2*(0:N)))

哪个是正确的转变?

1个回答

正如您所观察到的,您只是将低通滤波器向右移动,因此您生成了一个复值滤波器。将实值脉冲响应与复指数相乘自然会产生复值脉冲响应。您实际上需要做的是将频谱向右和向左移动:

(1)hBP[n]=hLP[n]ejnω0+hLP[n]ejnω0

其中是所需的中心频率。方程。相当于ω0(1)

(2)hBP[n]=2hLP[n]cos(nω0)

很明显,由此产生的带通脉冲响应是实值的。

它与高通滤波器一起工作的原因是,所以对于这种特殊情况()它没有不同之处。ejnπ=cos(nπ)=(1)nω0=π