#Roberto Mtz
#
#Funciones de analisis de respuesta de un RLC
#Este programa se analiza el tiempo y la frecuencia de las respuestas de mi circuito
#del proyecto de Automatizacion.

#Analisis de frecuencia.
function tran_fun = genera_Bode(R)
L = 1; 
C = 1;
a = 1;
w = 1;
phi = 1;

#Sistema a analizar
Sistema = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R*L**2+(((2*R*L**2)/C)+L**2)) (2*(R**2)*L)+(R*(L**2)*C)+(R*L)+((2*(L**2)*(w**2))/C) (((R**2)*L*C)+(2*R*(L**2)*(w**2))+((2*R*L*(w**2))/C)) (2*(R**2)*L*(w**2))]);

#El digrama de bode 
bode(Sistema);
print(strcat("bode-", num2str(R)), "-dpng");
return
endfunction


#Genera graficas de Bode en diferentes rangos de R
function ana_frec = frecuencia()
for i = 50:100
genera_Bode(i);
endfor
endfunction

#Genera grafica bode en conjunto 
function tran_fun = genera_Bode_color()
L = 1; 
C = 1;
a = 1;
w = 1;
phi = 1;

#Multiples sistemas con diferentes R
R1 = 1; Sis1 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R1*L**2+(((2*R1*L**2)/C)+L**2)) (2*(R1**2)*L)+(R1*(L**2)*C)+(R1*L)+((2*(L**2)*(w**2))/C) (((R1**2)*L*C)+(2*R1*(L**2)*(w**2))+((2*R1*L*(w**2))/C)) (2*(R1**2)*L*(w**2))]);
R2 = 5; Sis2 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R2*L**2+(((2*R2*L**2)/C)+L**2)) (2*(R2**2)*L)+(R2*(L**2)*C)+(R2*L)+((2*(L**2)*(w**2))/C) (((R2**2)*L*C)+(2*R2*(L**2)*(w**2))+((2*R2*L*(w**2))/C)) (2*(R2**2)*L*(w**2))]);
R3 = 10; Sis3 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R3*L**2+(((2*R3*L**2)/C)+L**2)) (2*(R3**2)*L)+(R3*(L**2)*C)+(R3*L)+((2*(L**2)*(w**2))/C) (((R3**2)*L*C)+(2*R3*(L**2)*(w**2))+((2*R3*L*(w**2))/C)) (2*(R3**2)*L*(w**2))]);
R4 = 20; Sis4 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R4*L**2+(((2*R4*L**2)/C)+L**2)) (2*(R4**2)*L)+(R4*(L**2)*C)+(R4*L)+((2*(L**2)*(w**2))/C) (((R4**2)*L*C)+(2*R4*(L**2)*(w**2))+((2*R4*L*(w**2))/C)) (2*(R4**2)*L*(w**2))]); 
R5 = 40; Sis5 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R5*L**2+(((2*R5*L**2)/C)+L**2)) (2*(R5**2)*L)+(R5*(L**2)*C)+(R5*L)+((2*(L**2)*(w**2))/C) (((R5**2)*L*C)+(2*R5*(L**2)*(w**2))+((2*R5*L*(w**2))/C)) (2*(R5**2)*L*(w**2))]);
R6 = 80; Sis6 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R6*L**2+(((2*R6*L**2)/C)+L**2)) (2*(R6**2)*L)+(R6*(L**2)*C)+(R6*L)+((2*(L**2)*(w**2))/C) (((R6**2)*L*C)+(2*R6*(L**2)*(w**2))+((2*R6*L*(w**2))/C)) (2*(R6**2)*L*(w**2))]);
R7 = 100; Sis7 = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R7*L**2+(((2*R7*L**2)/C)+L**2)) (2*(R7**2)*L)+(R7*(L**2)*C)+(R7*L)+((2*(L**2)*(w**2))/C) (((R7**2)*L*C)+(2*R7*(L**2)*(w**2))+((2*R7*L*(w**2))/C)) (2*(R7**2)*L*(w**2))]);

#El digrama de bode con multiples salidas
#bode(Sis1);
bode(Sis2);
set(findobj (gcf, "type", "axes"), "nextplot", "add");
bode(Sis3);
bode(Sis4);
bode(Sis5);
bode(Sis6);
bode(Sis7);

print("bode-junto", "-dpng");
return
endfunction

#Analisis de tiempo de respuesta.
function tran_fun = genera_ondas(W_onda)
L = 1; 
C = 1;
a = 1;
w = 1;
phi = 1;
R = 15;
#Sistema a analizar
Sistema = tf([(L+a*sin(phi)) (w*a*cos(phi))], [((2*L*2)/C) (2*R*L**2+(((2*R*L**2)/C)+L**2)) (2*(R**2)*L)+(R*(L**2)*C)+(R*L)+((2*(L**2)*(w**2))/C) (((R**2)*L*C)+(2*R*(L**2)*(w**2))+((2*R*L*(w**2))/C)) (2*(R**2)*L*(w**2))]);

Tiempo = 0:0.05:300;
lsim(Sistema, sin(W_onda*Tiempo), Tiempo), title(strcat("w = ", num2str(W_onda)));
print(strcat("ondas-", num2str(W_onda*10)), "-dpng");
endfunction

#Genera ondas con diferentes w
function ana_frec = onda_lsim()
for i = 0.00:0.10:2.0
genera_ondas(i);
endfor
endfunction