How to use freqz to plot filter frequency response?

75 次查看(过去 30 天)
I used systemIdentification to calculate the transfer function of my filter (see first figure) and then saved the idtf variable (attached). However, when I load the idtf variable and use freqz to plot the frequency response it looks very different (see second figure).
%number of frequencies
n = 50000;
%sampling frequency
f_sample = 2e8; %Hz
%transfer function numerator
b = [9.875702215802889e+04,6.459317537238607e+09];
%transfer function denominator
a = [1,1.844463395715939e+05,5.691593683410083e+09];
%calculate tranfer function response
[h_calc, w_calc] = freqz(b,a,n,f_sample);
%plot transfer function
figure(3)
plot(w_calc,h_calc)
set(gca,'XScale','log')
set(gca,'YScale','log')
xlabel('Frequency (Hz)')
ylabel('Filter Response')

采纳的回答

Christopher Saltonstall
Its is because the frequency response, h, is a complex value. By plotting,
plot(f,h)
only the real (in-phase) component is plotted. Instead, the magnitude of h must be plotted,
plot(f,abs(h))

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Filter Analysis 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by