使用 Octave 绘制 MTI 延迟线消除器的频率响应

信息处理 过滤器 频率响应 雷达
2022-02-22 08:00:33

我尝试绘制延迟线消除器(用于MTI的 FIR 滤波器)的频率响应。

延迟线消除器具有以下结构:

              +-----+
              |     |
x [k] >---+---|  T  |
          |   |     |
          |   +-----+
          |      |
          |   +-----+
          |   |     |
          |   |x -1 |
          |   |     |
          |   +-----+
          |      |
          |   +-----+
          |   | ___ |
          \---| \   |---> y [k]
              | /__ |
              +-----+

它的频率响应是众所周知的 ( Pg 20 ) 并且相等:

(1)H(ω)=2|sin(ωT2)|

我还尝试使用此问题中描述的算法获得消除器的频率响应

(2)y[k]=x[k]x[k1]

(3)Y(z)=X(z)X(z)z1

(4)H(z)=1z1

现在我尝试绘制(使用GNU Octave)响应(1)和(4)。

w = linspace (0, 2 * pi, 100);
z = exp (-j .* w);

H_z = 1 - z .^ -1;
H_w = 2.0 * abs (sin (w / 2) );

hold ("on");
plot (w, H_z, "1", "linewidth", 2);
plot (w, H_w, "2", "linewidth", 2);
title ("Frequency response of the delay line canceler.");
set (gca, 'XTick',     0: pi / 2: 2 * pi)
set (gca, 'XTickLabel',{'0', 'pi / 2', 'pi', '3 pi / 2','2 pi'})
xlabel ("Angular frequency.");
ylabel ("Magnitude.");
legend ("H (z)", 'H (\omega)');

我希望它们是相同的,但它们是不同的。

在此处输入图像描述

我的错误在哪里?

PS如果我为(4)添加模数(如:),H_z = abs (1 - z .^ -1);它们将变得相同。

1个回答

幅度始终定义为复杂|H(z)|的传递函数值的绝对值。H(z)您正在绘制的是包含复数的向量。您需要获取它们的绝对值,这会给您带来幅度。

如果您调用该angle函数,那么您将获得相位。传递函数H(z)总是复杂的。尝试打印 和 的值real(H_z)imag(H_z)然后您将看到的实值和虚值。现在大小适用于每个样本......H(z)|H(z)|sqrt(real * real + imag * imag)