Answers:
我们知道,一般而言,过滤器的传递函数由下式给出:
现在替代来评价在单位圆上的传递函数:
因此,这仅是在给定下进行多项式求值的问题。步骤如下:
w
。ze
。polyval
函数通过调用以下命令来计算分子和分母的值:polyval(b, ze)
将其除以并存储在中H
。因为我们对振幅感兴趣,所以取结果的绝对值。将所有内容放入代码中:
%% Filter definition
a = [1 -0.5 -0.25]; % Some filter with lot's of static gain
b = [1 3 2];
%% My freqz calculation
N = 1024; % Number of points to evaluate at
upp = pi; % Evaluate only up to fs/2
% Create the vector of angular frequencies at one more point.
% After that remove the last element (Nyquist frequency)
w = linspace(0, pi, N+1);
w(end) = [];
ze = exp(-1j*w); % Pre-compute exponent
H = polyval(b, ze)./polyval(a, ze); % Evaluate transfer function and take the amplitude
Ha = abs(H);
Hdb = 20*log10(Ha); % Convert to dB scale
wn = w/pi;
% Plot and set axis limits
xlim = ([0 1]);
plot(wn, Hdb)
grid on
%% MATLAB freqz
figure
freqz(b,a)
原始输出freqz
:
和我的脚本的输出:
快速线性比例比较-看起来很棒!
[h_f, w_f] = freqz(b,a);
figure
xlim = ([0 1]);
plot(w, Ha) % mine
grid on
hold on
plot(w_f, abs(h_f), '--r') % MATLAB
legend({'my freqz','MATLAB freqz'})
现在,您可以将其重写为某些函数,并添加一些条件以使其更有用。
另一种方法(以前提出的方法更可靠)是使用基本属性,即滤波器的频率响应是其脉冲响应的傅立叶变换:
因此,您必须输入系统的信号,计算滤波器的响应,并对其进行FFT:
d = [zeros(1,length(w_f)) 1 zeros(1,length(w_f)-1)];
h = filter(b, a, d);
HH = abs(fft(h));
HH = HH(1:length(w_f));
相比之下,这将产生以下结果:
a = [1 -0.5 -0.25]; % Some filter with lot's of static gain
。您能在这里解释一下这些参数的选择吗?我正在阅读我的Matlab手册,它[h,w] = freqz(hfilt,n)
在突触的一部分中说。您要在中指定两个过滤器(a,b)freqz
。两个过滤器都在hfilt
吗?还是一个n
?
这只是jojek答案的附录,使用双精度数学时,它更通用,也非常好。当精度较低时,当频率响应中的频率非常低(远低于Nyquist)并且滤波器的谐振频率非常低时,就会出现“余弦问题”。
当你计算幅度(平方)频率响应这些复杂的指数将被转换为正弦和余弦,但是当数学运算开始时,只有余弦可以生存。这应该很清楚,因为幅度是一个偶函数| ^ h (é - Ĵ ω)| = | ^ h (Ë Ĵ ω)| wrt频率和仅余弦是偶函数。
考虑以下触发身份:
。如此之小,以至于当将项(或它是负数)加到1时,该项和该项中的频率信息都会丢失。即使是浮点运算,情况也是如此,但双精度浮点运算的问题较少。但是我们当中有些将这个频率响应函数付诸实践的人可能没有双精度浮点或任何浮点的资源。
频率响应复杂
幅度平方:
使用上面的trig身份,您将得到幅度平方:
where
if your gear is intending to plot this as dB, it comes out as
so your division turns into subtraction, but you have to be able to compute logarithms to some base or another. numerically, you will have much less trouble with this for low frequencies than doing it the apparent way.