clear
close all

s = tf('s');
% G = (20*s + 40)/(s^3 + 10.2*s^2 + 3*s + 10);   %%prima funzione
G = (3*s^2 + 27)/((1+s)*(s^2+4)*(1+0.2*s))
%bode_gain = 4;
%zeros = -2;
%polo = -10; omega = 1; smorz = 0.1;
bode(G)
Gzpk = zpk(G) %scrivo in forma zero poli guadagno
Gzpk.DisplayFormat= 'Frequency'; 
Gzpk

G0 = dcgain(G) %Guadagno in continua, G(0), guadagno bode

[gpeak,fpeak] = getPeakGain(G)  %valore in scala lineare del picco di risonanza, e frequenza picco
gpeakdB = 20 * log10 (gpeak)
pole(G) %mostra i poli
zero(G) %mostra gli zeri

[m,f] = bode(G,5) %modulo e fase per w = 5 , MODULO IN SCALA LINEARE

figure(2);
margin(G); %marg. fase = distanza da -180 quando modulo = 0dB, Marg guadagno = modulo che si ha quando fase = 180
 figure(3);
nyquist(G); %grid, diagramma a modulo costante
figure(4);
nichols(G);

step(G) %sistema del 2o ordine, stabile, ad anello aperto
W = feedback(G,1); %retroaz unitaria, segno -1
step(W)