martes, 27 de noviembre de 2007 | |

5. APLICANDO MATLAB AL CONTROL DE PROCESOS

5.1. Respuesta en el dominio del tiempo

Para obtener la respuesta de un sistema en el tiempo ante una entrada estándar, debe primero definirse el sistema. Para el lo puede definirse en MatLab la función de transferencia propia del sistema o las ecuaciones de estado.
La función de transferencia de un sistema es una relación formada por un numerador y un denominador:


5.2. Respuesta en el dominio de la frecuencia

Para el estudio de un sistema en el dominio de la frecuencia existen tres herramientas disponibles en MatLab como son: los diagramas de Bode, de Nyquist y de Nichols.

Para obtener el diagrama de Bode de una función de transferencia, se definen dos vectores cuyos elementos son los coeficientes de los polinomios del numerador y del denominador en potencias decrecientes de S. Estos vectores son usados en el comando bode con la siguiente Sintaxis:

bode(num,den).
Se define la función de transferencia:

Ejemplo
>>y=[1];
>>u=[1 0.25 1];
>>bode(y,u)
MatLab presenta el diagrama de bode en la ventana de figuras:

Ejemplo 1: Calcular la suma de los n primeros términos de la sucesión 1, 2x, 3x^2, 4x^3, ...
n=input('¿Cuántos términos quieres sumar? '); x=input('Dame el valor del numero x '); suma=1; for i=2:n suma=suma+i*x^(i-1); end disp('El valor pedido es') disp(suma)

Ejemplo 2: Decidir si un número natural es primo.
n=input('Número natural que deseas saber si es primo '); i=2; primo=1; while i<=sqrt(n) if rem(n,i)==0 % Resto de dividir n entre i primo=0; break end i=i+1; end if primo disp('El número dado es primo.') else disp('El número dado no es primo.') disp('De hecho, es divisible por:') disp(i) end Ejemplo 3: Escribir un número natural en una base dada (menor que diez). n=input('Dame el número que quieres cambiar de base '); base=input('¿En qué base quieres expresarlo? '); i=1; while n>0 c(i)=rem(n,base); n=fix(n/base); % Parte entera de n/base i=i+1; end disp('La expresión en la base dada es:') i=i-1; disp(c(i:-1:1))

Por último, también pueden programarse funciones. La primera instrucción de un fichero que contenga una función de nombre fun debe ser:

function [argumentos de salida]=fun(argumentos de entrada)

Es conveniente que el fichero que contenga la función se llame como ella; así, la función anterior debería guardarse en el fichero fun.m; por ejemplo, si se desea programar una función que calcule, mediante el algoritmo de Euclides, el máximo común divisor de dos números naturales, basta escribir un fichero euclides.m cuyo contenido sea:
function m=euclides(a,b) % Cálculo del máximo común divisor de dos números naturales % mediante el algoritmo de Euclides if a
0 c=rem(a,b); a=b; b=c; end m=a;

Si, una vez escrito el fichero anterior, en el espacio de trabajo o en un programa se escribe la instrucción

mcd=euclides(33,121)

en la variable mcd se almacenará el valor 11.

Las variables de una función son siempre locales. Por tanto, aunque en el seno de la función se modifiquen los argumentos de entrada, el valor de las variables correspondientes queda inalterado. Por ejemplo, en la función euclides.m se modifica el valor de los argumentos de entrada, pero, sin embargo:
>>x=15; >>mcd=euclides(x,3); >>x x = 15
Si se pretende que las modificaciones de un argumento de entrada afecten a la variable correspondiente, deberá situarse dicho argumento, además, en la lista de argumentos de salida.

No hay comentarios: