% coefficienti dell'equazione alle differenze
% di un sistema passa-tutto a tempo discreto
lam = 0.9;
a = poly(lam*exp(1i*[pi/4 -pi/4]));
b = poly(1/lam*exp(1i*[pi/4 -pi/4]))*lam^2;
M = numel(b)-1;
N = numel(a)-1;

% passo di campionamento in omega
L = 1000;
dw = 2*pi/L;

% vettore dei valori di omega
w = -pi+(0:L)*dw;
num = b(1); % b_0
for m = 1:M
    num = num + b(1+m)*exp(-1i*w*m);
end
den = a(1); % a_0
for n = 1:N
    den = den + a(1+n)*exp(-1i*w*n);
end
H = num./den;

figure(1)
subplot(2,1,1)
hold off
plot(w,abs(H))
xlabel('\omega')
ylabel('|H(e^{j\omega})|')
subplot(2,1,2)
plot(w,unwrap(angle(H)))
xlabel('\omega')
ylabel('arg(H(e^{j\omega}))')

figure(2)
hold off
plot(cos(w),sin(w),':')
hold on
plot(roots(a),'x')
plot(roots(b),'o')
axis square
xlabel('Re(z)')
ylabel('Im(z)')
