我想模拟波导中的“负色散”。
是否可以设计具有反相响应的全通滤波器?(例如 -pi 在 0 和 pi 在奈奎斯特)?
我觉得:) 这在复杂领域是可能的(但不知道如何)。一开始我可以使用希尔伯特变换器来复杂化真实信号。
我想模拟波导中的“负色散”。
是否可以设计具有反相响应的全通滤波器?(例如 -pi 在 0 和 pi 在奈奎斯特)?
我觉得:) 这在复杂领域是可能的(但不知道如何)。一开始我可以使用希尔伯特变换器来复杂化真实信号。
有点。全通滤波器的倒数也是全通滤波器,可以简单地通过时间翻转脉冲响应来计算。然而,这使得过滤器是非因果的。因此,您需要添加批量延迟以使其再次成为因果关系。只要您不需要进行实时处理,这通常不是问题。
编辑:添加一个具体的例子。关键是在时域中进行过滤。您需要使用“足够”的样本将 IIR 响应截断为 FIR 响应。
% create an arbitrary allpass filter
b = [-.5 1]; a = [1 -.5];
% calculate the impulse response
n = 128; d0 = zeros(n,1); d0(1)= 1;
h1 = filter(b,a,d0);
% time flip and shift by 1 to keep the first sample in the same spot
h2 = circshift(flipud(h1),1);
% plot frequency responses
fh1 = fft(h1);
fh2 = fft(h2);
phases = unwrap([angle(fh1(1:n/2+1,:)) angle(fh2(1:n/2+1,:))]);
plot(phases);
假设“负色散”是指较低的频率传播得更快,不要尝试反转相位,这就像尝试使用时间旅行色散滤波器一样。相反,设计一个相位延迟随频率增加(而不是减少)的全通滤波器。
例如,如果您正在执行一阶全通,
D1(z) = (-0.9 + z^-1)/(1 - 0.9z^-1)
将具有随频率减小的相位延迟。和
D2(z) = (0.9 + z^-1)/(1 + 0.9z^-1)
将具有随频率增加的相位延迟。
唯一真正的缺点是您不能以便宜或容易的方式在较高频率下获得相对较大的相位延迟。