ece210/lessons/lesson06/analog_freqs.m

38 lines
1.0 KiB
Matlab

%% Lesson 6x: the S-plane
% If you happen to have an analog filter represented as a ratio of polynomials,
% MATLAB can analyze that too! `freqs()` will give you the analog frequency
% response evaluated at frequencies in the given vector, interpreted in rad/s.
%% a simple example
% What sort of filter is this?
a = [1 0.4 1];
b = [0.2 0.3 1];
w = logspace(-1, 1);
H = freqs(b, a, w);
Hdb = 20*log10(abs(H));
Hph = rad2deg(unwrap(angle(H)));
figure;
subplot(2, 1, 1);
semilogx(w, Hdb);
xlabel("Frequency (rad/s)");
ylabel("|H| (dB)");
title("Magnitude Response");
subplot(2, 1, 2);
semilogx(w, Hph);
xlabel("Frequency (rad/s)");
ylabel("Phase (deg)");
title("Phase Response");
%% some notes
% `zp2tf` and its associates also work in the analog domain, as they deal
% simply with ratios of polynomials. The interpretation of the results will be
% different, though, as we're working with the *analog* plane rather than the
% digital one. `splane.m` gives an example visualization of the s-plane.
[z, p, k] = tf2zp(b, a);
figure;
splane(z, p);