我已经绘制了高通滤波器的响应x=[1 -1]
;
freqz(x)
给我
fft
给我的幅度图在哪里
为什么这两个情节不同?两者都是频率响应,那么为什么我的情节不同。做什么freqz()
?
我已经绘制了高通滤波器的响应x=[1 -1]
;
freqz(x)
给我
fft
给我的幅度图在哪里
为什么这两个情节不同?两者都是频率响应,那么为什么我的情节不同。做什么freqz()
?
您仅从两个样本计算 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 刻度。
有关更多信息,您可以查看我之前的回答。