clc
clear all
s = tf('s')
% 
% G = (250*(s+100))/(s*(s+5)*(s+50)^2)
% G = zpk(G)
% G.DisplayFormat = 'Frequency'
% 
% kg = 2
% kd = 0.1
% kh = 1/kd
% 
% e_ramp = 0.002
% kc = (kd^2)/(e_ramp*kg)
% 
% d1 = 0.8
% e_grad = 0.04
% kc1 = d1/(e_grad*kh)
% 
% kc = max([kc kc1])
% 
% Mr_dB = 1 
% Mr = 10^(Mr_dB/20)
% 
% fm = (2.3-Mr)/(1.25)
% fm_deg = rad2deg(fm)
% 
% Ts = 0.1
% 
% Bw = 3 / Ts
% 
% wc = 0.7*Bw
% 
% %vediamo 
% 
% L = kc * G * kh
% [m,f] = bode(L,wc)
% m_dB = 20*log10(m)
% 
% my_margin = f + 180
% dfm = fm_deg - my_margin
% 
% %due reti anticipatrici, uso carte normalizzate perché mi voglio male
% %sfida: usare solo 2 reti anticipatrici
% 
% wt = 1.055
% m = 10
% tau = wt / wc
% 
% Ca = (1+tau*s)/(1+(tau/m)*s)
% L1 = Ca*Ca*L
% [m,f] = bode(L1,wc)
% m_dB = 20*log10(m)
% my_margin = f +180
% 
% W = feedback(L1,1)
% bode(W)

G = (10)/((1+0.1*s)^2*(1+0.001*s))
G = zpk(G)
G.DisplayFormat = 'Frequency'

%C = 2 si, stabilizzabile



%C = (4.5*(s+1))/s
C = 0.5/s 
L = C*G
margin(L)

W = feedback(L,1)
%step(W)
%bandwidth(W)
peak = getPeakGain(W);
peak_dB = 20*log10(peak)