MATLAB 中和之间的区别请求_ _ _z ( )freqz()p l o t ( a b s ( f f t ( ) ) )plot(abs(fft()))

信息处理 频率响应 数字滤波器
2022-02-21 06:21:11

我已经绘制了高通滤波器的响应x=[1 -1]

freqz(x)给我

在此处输入图像描述

fft给我的幅度图在哪里

在此处输入图像描述

为什么这两个情节不同?两者都是频率响应,那么为什么我的情节不同。做什么freqz()

1个回答

您仅从两个样本计算 FFT。您需要用零填充脉冲响应以获得有效结果。所以在 MATLAB 中应该是:

N = 1024; % Number of points to evaluate at
% Create the vector of angular frequencies at one more point.
% Filter itself
b=[1,-1];
[h_f, w_f] = freqz(b, 1);
figure
grid on
hold on
plot(w_f, abs(h_f), 'or') % MATLAB
h = [b, zeros(1,N-2)];
HH = abs(fft(h));
HH = HH(1:length(w_f));
plot(w_f, HH); % Manual calculation
legend({'MATLAB freqz', 'Manual'})

如您所见,它与您计算的 fft 中的第一个和最后一个值匹配。请记住,它以线性显示 - 而不是 dB 刻度。

在此处输入图像描述

有关更多信息,您可以查看我之前的回答