Está en la página 1de 28

CONTROL I PRACTICA 1 M. C.

BENITO BÁEZ SÁNCHEZ

PRACTICA 1: FUNDAMENTOS DE MATLAB Y GRAFICACIÓN

1.1 INTRODUCCIÓN

MATLAB es un programa interactivo para cálculos científicos y de ingeniería. La familia


de programas de MATLAB incluye un programa base y una gran variedad de módulos,
(denominados TOOLBOXES).

Utilizaremos el toolbox de control system toolbox, el cual es un conjunto de rutinas para


MATLAB dedicadas a aplicar las distintas herramientas de la teoría de control clásico
para sistemas lineales. Podemos dividir esta toolbox en cuatro subgrupos:
• funciones para definir modelos
• funciones para obtener la respuesta temporal
• funciones para obtener la respuesta en frecuencia
• funciones para el diseño de controladores

En una sesión típica de MATLAB básicamente se utilizan relaciones, matrices, gráficas


y programas scripts.

1.2 Relaciones Fundamentales

Después de ejecutar el programa MatLab desde el sistema operativo empleado, por


ejemplo haciendo doble click sobre el icono de MatLab en ambientes Windows, aparece
el indicador de comandos el cual está listo para recibir instrucciones en lenguaje
MatLab. Este indicador es de la siguiente forma: >>

Al iniciar el uso de MatLab están disponibles los comandos de ayuda y demostración.


Para ejecutarlos se escribe el comando en la línea de comandos después del prompt
(símbolo >>), y se presiona la tecla <Enter>. Por ejemplo:
>>help ayuda sobre los diferentes comandos de MatLab.
>>demo hace una demostración de las diferentes aplicaciones de MatLab.
>>quit Para cerrar o finalizar el uso de MatLab se usa el comando quit.

En MATLAB se usa el signo de igual para asignar una expresión a una variable.

>>variable = expresión

La forma de interactuar con MatLab es a través de la línea de comandos. Puede


ejecutarse un comando si este escrito después del promt (símbolo >>), y presione
<Enter>.

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Se muestra una relación simple donde los comandos se introducen tal como ellos se
escriben matemáticamente. >>a=4 / 3 < enter >

MATLAB produce la respuesta: a =1.3333

Asigna a la variable "a" el valor de cuatro dividido por tres. En general se recomienda
el usar nombres de variables apropiados y fáciles de memorizar. MATLAB reconoce los
primeros 19 caracteres del nombre de una variable y solamente requiere que el primer
carácter de una variable sea una letra, además es sensible a mayúsculas y minúsculas
por ejemplo A y a son variables diferentes y las funciones de MATLAB deben estar en
minúsculas.

Si no se desea crear una nueva variable, pero se quiere saber el valor de una
expresión, se puede teclear la expresión por si misma: >> 4 / 3

lo cual produce ans =1.3333

donde " ans " variable que genera MATLAB que significa respuesta (answer).

Alternativamente si se desea crear una nueva variable pero no se quiere ver la

respuesta de MATLAB, se teclea un punto y coma " ; " al final de la expresión.


Por ejemplo: >>b=4+7;

MATLAB creará la variable b de valor 11, pero no mostrará el valor de b.

El punto y coma (" ; " )es muy útil cuando se definen vectores o matrices muy grandes
y no se desea que se muestren. Se puede ver el valor de una variable en cualquier
tiempo únicamente tecleando el nombre de dicha variable: >>b

b =11

Se pueden hacer expresiones de una secuencia de números, operadores, funciones y


variables que hallan sido previamente definidas. Por ejemplo:

>>c= a*(b-1)

c =13.3333

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Si se está tecleando una expresión y no se completa en la línea, se utilizan tres o más


puntos al final de la línea y se continúa tecleando en la siguiente línea, por ejemplo:

>>p=1+2+...

3+4+6;

Los operadores matemáticos que se utilizan en + Suma


MATLAB para escribir relaciones matemáticas
- Resta
son los siguientes:

* Multiplicación

^ Potencia

Por ejemplo si queremos elevar a una potencia el valor de p obtenido anteriormente:

>>p^2 (Para obtener el circunflejo ^ : oprima <alt> y luego 94)

MATLAB responde

ans =256

El orden de prioridad en el cual MATLAB efectúa las operaciones aritméticas es el


siguiente: potencia ( ^ ), división ( / ), multiplicación ( * ), suma ( + ) y resta ( - ), esto es
de izquierda a derecha pero pueden usarse paréntesis para alterar el orden de la
operación por ejemplo :

caso 1 >>1+2^3/4*2 caso 2 >> 1 + 2 ^ 3 / (4 * 2)

MATLAB responde ans =5 MATLAB responde ans=2

caso 3 >>(1+2) ^ 3 / (4 * 2)

MATLAB responde ans = 3.3750

MATLAB tiene una gran variedad de funciones que fácilmente pueden ser incorporadas
dentro de expresiones, las más comunes se muestran en seguida:

sin(x) seno de x cos(x) coseno de x

asin(x) arcoseno de x acos(x) arcocoseno de x

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

tan(x) tangente de x atan(x) arcotangente de x

abs(x) valor absoluto de x sqrt(x) raíz cuadrada de x

imag(x) parte imaginaria de x real(x) parte real de x

conj(x) complejo conjugado de x log(x) logaritmo natural de x

log10(x) logaritmo base 10 de x exp(x) exponencial de x

MATLAB tiene algunas variables predefinidas como: j, i Para representar números


complejos

NaN Operaciones indefinidas (Not is a Number)

inf Infinito

pi Representa π

Ejemplos: >>c=4/0

MATLAB responde Warning: Divide by zero

c=inf

MATLAB responde NAN cuando se realizan ciertos cálculos indefinidos >


> d = inf / inf

d =NaN

Para representar números complejos > > z = 3 + 4j “o” 3+4i

MATLAB responde z =3.0000 + 4.0000i

El operador complejo (i o j) debe ir después del coeficiente numérico.

Todos los cálculos en MATLAB se representan en doble precisión. El usuario puede


controlar el número de decimales con que aparece en pantalla el valor de las variables,
utilizando el comando format sin olvidar que ello no está relacionado con la precisión
con la que se hacen los cálculos, sino con el aspecto con que éstos se muestran:

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Si al final un elemento de una matriz no es un entero exacto, hay cuatro formatos de


salida posibles. La salida visualizada se puede controlar visualizando una de las
siguientes órdenes:

format short coma fija con 4 decimales (defecto)

format long coma fija con 15 decimales

format hex cifras hexadecimales

format bank números con dos cifras decimales

format short e notación científica con 4 decimales

format short g notación científica o decimal, dependiendo del valor

format long e notación científica con 15 decimales

format long g notación científica o decimal, dependiendo del valor

format loose introduce líneas en blanco en la salida (defecto)

format compact elimina las líneas en blanco citadas (recomendada)

format rat números racionales como cocientes de enteros

Una vez llamado el formato elegido permanece activo hasta que sea cambiado.

Para el análisis de sistema de control, se suelen utilizar format short y format long.
Siempre que se llame a MATLAB y no se introduzca una orden de formato, MATLAB
muestra los resultados numéricos en formato corto:

>>1/3

ans = 0.3333
>>format long

>>1/3

ans = 0.33333333333333
>>format % Vuelve al formato estándar que es el de 4 cifras decimales

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Todas las variables utilizadas en una sesión se almacenan automáticamente en el


espacio de trabajo de MATLAB para su uso posterior. Para borrar las variables de
espacio de trabajo se puede utilizar la función clear all. La función who se utiliza para
mostrar las variables almacenadas en el área de trabajo y la función whos muestra
información adicional sobre la dimensión tipo y tamaño de las lo variables.

Es posible recuperar comandos anteriores de MATLAB y moverse por dichos comandos


con el ratón y con las teclas-flechas ↑ y ↓ Al pulsar la primera de dichas flechas
aparecerá el comando que se había introducido inmediatamente antes. De modo
análogo es posible moverse sobre la línea de comandos, ir al principio de la línea con la
tecla Inicio, al final de la línea con Fin, y borrar toda la línea con Esc. Recuérdese que
sólo hay una línea activa (la última).

Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal
se pueden utilizar las funciones clc y home.

La función clc (clear console) elimina todas las salidas anteriores, mientras que home
las mantiene, pero lleva el prompt (» ) a la primera línea de la ventana.

1.3.- MATRICES

La manera de introducir matrices pequeñas a MATLAB es utilizando una lista de


elementos. Los elementos de la matriz son separados por espacios o en blanco ó

, ;
comas (“ ”) y encerrados por corchetes y se usa punto y coma ( )para indicar el final

del renglón.

Por ejemplo: >> A = [ 1 2 3;4 5 6; 7 8 9 ]

MATLAB responde: A= 123

456

789

Las matrices también pueden ser introducidas por medio de una lista de elementos de
cada renglón de la matriz utilizando punto y coma al terminar cada renglón o
simplemente darle retorno al terminar cada renglón y se encierra entre corchetes.

Ejemplo: >>B = [ 1 2 3 4 5 6 7;

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

2 4 6 8 2 4 6;

1 3 5 7 9 1 3;

1 2 3 4 5 6 7];

Al oprimir B y luego <enter> aparece: B =

1234567

2468246

1357913

1234567

Las matrices pueden tener elementos formados por medio de expresiones ó funciones y
pueden ser reales o complejos veamos el siguiente ejemplo:

>> A = [ 1, - 4j , sqrt(2);

log(-1) sin (pi/2) cos(pi/3);

asin(0.5), acos(0.8) exp(0.8) ]

Al oprimir A y <enter> aparece

>>A= 1.000 0 - 4. 0000i 1.4142

0 + 3.1416i 1.0000 0.5000

0.5236 0.6435 2.2255

1.3.1.- Operaciones básicas con matrices: Suma, resta, multiplicación, transpuesta,


inversa y las operaciones de elemento a elemento:

>>A=[ 1 3; 5 9 ] B= [5 -7;10 0] >> A’

>>A+B ans = 1 5

ans = 6 -4 3 9

15 9

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

> > b = [ 1 ; 5 ]; >>inv (A)

>>A*b ans =-1.5 0.5000

ans = 16 0.8333 -0.1667

50

La transpuesta de una matriz se obtiene utilizando el apóstrofo y la inversa con la


función inv.

En las operaciones elemento a elemento el símbolo matemático es precedido por un

punto “ . “las operaciones de suma y resta no requieren de punto.


Suponiendo que A y B son dos matrices de 2 x 2 dadas por:

a a12  b b12 
A =  11 B =  11
a 21 a 22  b21 b22 

a b a12 b12 
Utilizando la multiplicación elemento a elemento se obtiene: A• * B =  11 11
a 21b21 a 22 b22 

Los elementos de A.• ∗ B son el producto de los correspondientes elementos de A y B.


A• 2 es el cuadrado de cada uno de sus elementos, Por ejemplo

>> A=[1; 2; 3]; , B=[-6; 7; 10]; >>A.*B

ans= -6

14

30

>>A.^2

ans= 1

1.3.2 .- Generación de vectores

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

MATLAB puede generar vectores automáticamente que contengan elementos que van
de un valor inicial Xi a un valor final Xf con ciertos incrementos especificados por dX.: X
= Xi : dX : Xf

Pueden generarse fácilmente vectores utilizando esta notación llamada notación colon.
Por ejemplo, se desea generar un vector con valor inicial 1 y final 10 con incrementos
de 1

>>X=[1:1:10]

X=1 2 3 4 5 6 7 8 9 10

La transpuesta de este vector X=[1:1:10]’ y MATLAB responde con una columna de


datos. Esta notación es útil cuando se desea calcular ó graficar alguna función contra
algún parámetro que varia. Por ejemplo se desea calcular los valores de y= x sen(x) si
x varia de 0 a 1 con incrementos de 0. 1 .

>>x=[0:0.1:1]’; y = x. *sin(x);
>> [x y]
ans= 0 0
0.1000 0.0100
0.2000 0.0397
0.3000 0.0887
0.4000 0.1558
0.5000 0.2397
0.6000 0.3388
0.7000 0.4510
0.8000 0.5739
0.9000 0.7050
1.0000 0.8415

Si lo que conocemos del vector es que la primera coordenada vale 0, la última 20 y que
tiene 11 en total, escribiremos:

>>x=linspace(0,20,11)

x= 0 2 4 6 8 10 12 14 16 18 20

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

A las coordenadas de un vector se accede sin más que escribir el nombre del vector y,
entre paréntesis, su índice:

>>x(3) >>x(:)

ans = 4 ans= 0
2
y se pueden extraer subvectores, por ejemplo: 4
6
>>x(2:5)
8
ans= 2 4 6 8 10
12
14
16
18
20
1.3.3.-MATRICES DE UTILIDAD:

En MATLAB, las funciones: Ones(n)

Ones(m,n)

Ones(A)

Zeros

Produce matrices especiales. Esto es, ones(n) genera una matriz de unos de n x n
Ones(m,n) genera una matriz de unos de m x n. Similarmente zeros(n) genera una
matriz de ceros de n x n. Mientras que zeros (m,n) genera una matriz de ceros de m x n.
Zeros(A) genera una matriz de ceros del mismo tamaño que A, excepto cuando A es un
escalar.

Frecuentemente necesitamos la matriz identidad.

En MATLAB la proposición eye(n) genera una matriz identidad de n x n.

Si x es un vector, la proposición diag(x), genera una matriz diagonal con x puesto en la


diagonal principal; por ejemplo:

X=[ones(1,n)]; Diag((ones(1,n)) genera una matriz identidad como sigue

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

>>diag(ones(1,5))

ans = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

Si A es una matriz cuadrada, entonces diag(A) es un vector que consiste en la diagonal


principal de A y diag(diag(A)) es una matriz diagonal en la cual la diagonal principal de
A aparece en la diagonal principal de la nueva matriz.

>>A=[1 2 3;4 5 6;7 8 9] >>díag(A) >>diag(diag(A))

A= 1 2 3 ans= 1 ans= 1 0 0

4 5 6 5 0 5 0

7 8 9 9 0 0 9

Note que diag(1:5) nos da:

ans=1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5

Como y se menciono en MATLAB se accede a los elementos de un vector poniendo el


índice entre paréntesis (por ejemplo x(3) ó x(i)). Los elementos de las matrices se
acceden poniendo los dos índices entre paréntesis, separados por una coma (por
ejemplo A(1,2) ó A(i,j)). Las matrices se almacenan por columnas (aunque se
introduzcan por filas), y teniendo en cuenta esto puede accederse a cualquier
elemento de una matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3x3) se
obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).

Los operadores matriciales de MATLAB son los siguientes:

+ adición o suma

– sustracción o resta

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

* multiplicación

' transpuesta

^ potenciación

\ división-izquierda

/ división-derecha

.* producto elemento a elemento

./ y .\ división elemento a elemento

.^ elevar a una potencia elemento a elemento

TIPOS DE MATRICES PREDEFINIDOS

Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de
tipos particulares. Algunas de estas funciones son las siguientes:

eye(4) forma la matriz unidad de tamaño (4x4)

zeros(3,5) forma una matriz de ceros de tamaño (3x5)

zeros(4) ídem de tamaño (4x4)

ones(3) forma una matriz de unos de tamaño (3x3)

ones(2,4) idem de tamaño (2x4)

linspace(x1,x2,n) genera un vector con n valores igualmente espaciados


entre x1 y x2

logspace(d1,d2,n) genera un vector con n valores espaciados logarítmicamente


entre 10^d1 y 10^d2. Si d2 es pi los puntos se generan entre
10^d1 y pi

rand(3) forma una matriz de números aleatorios entre 0 y 1, con distribución


uniforme, de tamaño (3x3)

rand(2,5) idem de tamaño (2x5)

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

randn(4) forma una matriz de números aleatorios de tamaño (4x4), con

distribución normal, de valor medio 0 y varianza 1.

magic(4) crea una matriz (4x4) con los números 1, 2, ... 4*4, con la propiedad de
que todas las filas y columnas suman lo mismo

hilb(5) crea una matriz de Hilbert de tamaño (5x5). La matriz de Hilbert es una
matriz cuyos elementos (i,j) responden a la expresión (1/(i+j-1)). Esta es
una matriz especialmente difícil de manejar por los grandes errores
numéricos a los que conduce

invhilb(5) crea directamente la inversa de la matriz de Hilbert

kron(x,y) produce una matriz con todos los productos de los elementos del vector x
por los elementos del vector y. Equivalente a x'*y, donde x e y son
vectores fila compan(pol) construye una matriz cuyo polinomio
característico tiene como coeficientes los elementos del vector pol
(ordenados de mayor grado a menor)

vander(v) construye la matriz de Vandermonde a partir del vector v (las columnas


son las potencias de los elementos de dicho vector)

A continuación se describen algunas de las funciones que crean una nueva matriz a
partir de otra o de otras, comenzando por dos funciones auxiliares:

[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A. Si la


matriz es cuadrada basta recoger el primer valor de retorno.

n=length(x) calcula el número de elementos de un vector x

zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz A
previamente creada.

ones(size(A)) ídem con unos

A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los
elementos de un vector ya existente x

x=diag(A) forma un vector x a partir de los elementos de la diagonal de una


matriz ya existente.

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

A= diag(diag(A)) crea una matriz diagonal a partir de la diagonal de la matriz


A=blkdiag(A,B) crea una matriz diagonal de submatrices a partir de las matrices
que se le pasan como argumentos.

triu(A) forma una matriz triangular superior a partir de una matriz A (no tiene por
qué ser cuadrada). Con un segundo argumento puede controlarse que se
mantengan o eliminen más diagonales por encima o debajo de la diagonal
principal.

tril(A) ídem con una matriz triangular inferior

rot90(A,k) Gira k*90 grados la matriz rectangular A en sentido antihorario. k es un


entero que puede ser negativo. Si se omite, se supone k=1 flipud(A) halla
la matriz simétrica de A respecto de un eje horizontal

fliplr(A) halla la matriz simétrica de A respecto de un eje vertical reshape(A,m,n)


Cambia el tamaño de la matriz A devolviendo una matriz de tamaño m×n
cuyas columnas se obtienen a partir de un vector formado por las
columnas de A puestas una a continuación de otra. Si la matriz A tiene
menos de m×n elementos se produce un error. Un caso especialmente
interesante es el de crear una nueva matriz componiendo como
submatrices otras matrices definidas previamente.

OPERADOR DOS PUNTOS (:)

Ya se ha mencionado la utilidad de este operador. Aquí se retoma porque es un


operador muy importante en MATLAB y puede usarse de varias formas. Para empezar,
defínase un vector x con el siguiente comando:

» x=1:10

x =1 2 3 4 5 6 7 8 9 10

En cierta forma se podría decir que el operador (:) representa un rango: en este caso,
los números enteros entre el 1 y el 10. Por defecto el incremento es 1, pero este
operador puede también utilizarse con otros valores enteros y reales, positivos o
negativos. En este caso el incremento va entre el valor inferior y el superior, en las
formas que se muestran a continuación:

» x=1:2:10

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

x =1 3 5 7 9

» x=1:1.5:10

x =1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000

» x=10:-1:1

x =10 9 8 7 6 5 4 3 2 1

Puede verse que, este operador produce vectores fila. Si se desea obtener un vector
columna basta trasponer el resultado. El siguiente ejemplo genera una tabla de
funciones seno y coseno.

» x=[0.0:pi/50:2*pi]';

» y=sin(x); z=cos(x);

» [x y z]

:
El operador dos puntos ( ) es aún más útil y potente –y también más complicado con

matrices. A continuación se va a definir una matriz A de tamaño 6x6 y después se


realizarán diversas operaciones sobre ella con el operador (:).

» A=magic(6) Recuérdese que MATLAB accede a los


elementos de una matriz por medio de los índices
A= 35 1 6 26 19 24
de fila y de columna encerrados entre paréntesis
y separados por una coma. Por ejemplo:
3 32 7 21 23 25

» A(2,3)
31 9 2 22 27 20

ans =7
8 28 33 17 10 15

30 5 34 12 14 16

4 36 29 13 18 11

El siguiente comando extrae los 4 primeros Los dos puntos aislados representan "todos los
elementos de la 6ª fila: elementos". Por ejemplo, el siguiente comando
extrae todos los elementos de la 3ª fila:
» A(6, 1:4)
» A(3, :)
ans = 4 36 29 13

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

ans =31 9 2 22 27 20

Para acceder a la última fila o columna puede El siguiente comando extrae todos los elementos
utilizarse la palabra end, en lugar del número de las filas 3, 4 y 5:
correspondiente. Por ejemplo, para extraer la
» A(3:5,:)
sexta fila (la última) de la matriz:

ans = 31 9 2 22 27 20
» A(end, :)

8 28 33 17 10 15
ans =4 36 29 13 18 11

30 5 34 12 14 16

Se pueden extraer conjuntos disjuntos de filas En los ejemplos anteriores se han extraído filas y
utilizando corchetes [ ]. Por ejemplo, el siguiente no columnas por motivos del espacio ocupado
comando extrae las filas 1, 2 y 5: por el resultado en la hoja de papel. Es evidente
que todo lo que se dice para filas vale para
» A([1 2 5],:)
columnas y viceversa: basta cambiar el orden de
los índices.
ans = 35 1 6 26 19 24

3 32 7 21 23 25

30 5 34 12 14 16

El operador dos puntos (:) puede utilizarse en ambos lados del operador (=). Por
ejemplo, a continuación se va a definir una matriz identidad B de tamaño 6x6 y se van a
reemplazar filas de B por filas de A. Obsérvese que la siguiente secuencia de
comandos sustituye las filas 2,4 y 5 de B por las filas 1,2 y 3 deA

» B=eye(size(A)); Se pueden realizar operaciones aún más


complicadas, tales como la siguiente
» B([2 4 5],:)=A(1:3,:)
» B=eye(size(A));
B= 1 0 0 0 0 0
» B(1:2,:)=[0 1; 1 0]*B(1:2,:)
35 1 6 26 19 24

0 0 1 0 0 0

3 32 7 21 23 25

31 9 2 22 27 20

0 0 0 0 0 1

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Como nuevo ejemplo, se va a ver la forma de Obsérvese que por haber utilizado paréntesis –en
invertir el orden de los elementos de un vector: vez de corchetes- los valores generados por el
operador (:) afectan a los índices del vector y no
» x=rand(1,5)
al valor de sus elementos.

x =0.9103 0.7622 0.2625 0.0475 0.7361


Para invertir el orden de las columnas de una
matriz se puede hacer lo siguiente:
» x=x(5:-1:1)

» A=magic(3)
x =0.7361 0.0475 0.2625 0.7622 0.9103

A= 8 1 6

3 5 7

4 9 2

Se sustituyen las dos primeras filas de B por el aunque hubiera sido más fácil utilizar la función
producto de dichas filas por una matriz de fliplr(A), que es específica para ello. Finalmente,
permutación. hay que decir que A(:) representa un vector
columna con las columnas de A una detrás de
» A(:,3:-1:1)
otra.

ans = 6 1 8

7 5 3

2 9 4

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

GRAFICACIÓN

2.1.- INTRODUCCIÓN

Las gráficas juegan un papel muy importante en el diseño y análisis de los sistemas de
control. Un componente importante de un paquete interactivo para el análisis y diseño
de sistemas de control es su capacidad gráfica, debe incluir formatos para gráficas del
Lugar de Raíces rlocus, Bode, Nyquist y de respuesta en el tiempo, etc.

Para las gráficas en dos dimensiones las funciones que se utilizan son plot,
semilog(x), semilog(y), loglog y algunas funciones para rotular las gráficas, además
se introducen los programas script.

2.2.- GRÁFICAS EN DOS DIMENSIONES

Hay dos grupos básicos de funciones gráficas. El primer grupo de funciones se


muestra en la tabla 2.1, donde se especifican los formatos de gráficas como la x-y,
logarítmica y semilogarítmica. El segundo grupo de funciones se muestran en la tabla
2.2, estas funciones nos permiten etiquetar los ejes, añadir textos, mostrar varias
gráficas y dividir una ventana gráfica.

Tabla 2.1 Formatos de gráficas x - y.

plot(x,y) Gráfica el vector x vs vector y

semilogx(x,y)Gráfica el vector x vs vector y.

el eje x es log10; el eje y es lineal

semilogy(x,y)Gráfica el vector x vs vector y.

El eje x es lineal; el eje y es log10

loglog(x,y) Gráfica el vector x vs vector y

los ejes x , y son log10

Tabla 2.2 Funciones gráficas.

title('texto’) Pone un texto en el encabezado

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

xlabel('texto’) Etiqueta el eje x con un texto

ylabel('texto’) Etiqueta el eje y con un texto

text(pl,p2,'texto') Pone un texto en las coordenadas pl, p2

subplot Divide la pantalla en ventanas

grid Red de coordenadas, poner cuadricula

La función plot crea una gráfica lineal con ejes x -y. Para generar gráficas logarítmicas
se sustituye la función plot por loglog, semilogx, semilogy, todas estas ftmciones se
utilizan de manera similar.

Gráfica lineal simple Plot (y)

Para un vector dado y, la función plot(y) generará una gráfica lineal de los elementos de
y contra el numero de elementos de y.

Por ejemplo si se requiere graficar los siguientes datos [0 1 3 5 2 7 0 8 4 0] con


respecto a un numero de ellos y rotular la gráfica se utilizan las funciones plot (y), title,
xlabel, ylabel, el procedimiento se muestra en seguida:

» y=[0 1 3 5 2 7 0 8 4 0];

» plot(y);grid

» title('GRÁFICA');

» xlabel('NUMERO DE
DATOS');

» ylabel('AMPLITUD');

Figura 2.2 Gráfica simple rotulada utilizando la función plot (y).

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Gráficas(x,y)

Para crear una gráfica simple x - y se utiliza la función plot (x, y), es decir si se desea
graficar los elementos de x con respecto a los elementos de y, el vector x puede ser
generado con datos aleatorios x=[1 4 6 2 8 9 1 0 6 7 9 0 7 6] ó por la notación colón
x=[xi:dx:xf].

En seguida se muestra un ejemplo de una gráfica x - y de la función y x*seno(x),


graficada con respecto a x.

» x=[0:0.1:1]';

» y=x.*sin(x);

» plot(x,y)

» title('Gráfica de x*sen(x) Vs
x')

» xlabel('x')

» ylabel('y')

» grid

Figura 2.4 Gráfica simple de y = x seno(x) vs x.

Los ejes y la escala son generados automáticamente. Los ejes son rotulados con los
comandos xlabel, ylabel; el título de la gráfica se determina con el comando títle y la
red de coordenadas con el comando grid.

Pueden ser generadas también varias gráficas en una misma ventana utilizando la
función plot con argumentos múltiples por ejemplo plot ( x , yl , x , y2 , x , y3 ), puede
indicarse también los tipos de líneas para cada gráfica, como se muestra en el siguiente
ejemplo. Los tipos de líneas disponibles se muestran en la tabla 2.2.

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

» x=[0:0.1:1]';

» y1=x.*sin(x);y2=sin(x);

» plot(x,y1,'b*',x,y2,'g--')

» text(0.1,0.9,'y1=x seno(x)
***')

» text(0.1,0.85,'y2=seno(x) ---
')

»
xlabel('x'),ylabel('y1,y2'),grid

Figura 2.6 Gráfica múltiple x -y.

Los tipos de líneas se seleccionan automáticamente a menos que el usuario quiera


modificarlos. El uso de la función text, el cambio del tipo de línea y color se muestran
también en el procedimiento para obtener la gráfica múltiple de la figura 2.6. Los tipos
de línea disponibles y colores se muestran en la tabla 2.2

Tabla 2.2 Tipos de línea y colores

- Línea sólida y Amarillo(yellow)

-- Línea discontinua r Rojo(red)

.. Línea punteada g Verde(green)

; Línea punto y coma b Azul(blue)

* Asterisco w Blanco(white)

+ Mas k Negro(black)

. Punto m Magenta(purple)

o Circulo

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Gráficas a colores y tipos de línea se pueden obtener añadiendo un argumento a la


función plot, por ejemplo si queremos generar una gráfica de color azul con tipo de
línea asterisco hacemos:

plot(x,y,’b*’)

Las otras funciones gráficas loglog, semilogx, semilogy se utilizan en forma similar a la
función plot.

FUNCIÓN SUBPLOT

La función subplot se utiliza para dividir la pantalla en varias ventanas su forma general:

subplot(m,n,p)

Donde m n p son tres números, m n divide la pantalla en m x n ventanas, los valores


máximos permitidos de m ó n es 2 por lo que se puede dividir la pantalla hasta en 4
ventanas, el numero p determina la posición de la ventana donde se desea mostrar la
gráfica por ejemplo

subplot(211), plot( y ), subplot (212) , plot(u)

Podemos observar que m = 2 y n = 1, divide la pantalla en dos renglones una columna ,


mostrando dos gráficas, en la primera se graficaría ( y ) y en la segunda (u ) .

Para gráficas múltiples la función subplot se puede utilizar de la siguiente manera:

subplot(211), plot (x , y1, x , y2), subplot(212), plot (x,y3,x ,y4 )

para desactivar la función subplot, se puede utilizar subplot(111) o simplemente subplot.

2.3.- PROGRAMAS SCRIPT

Hasta este momento todo nuestro trabajo lo hemos desarrollado dentro del espacio de
trabajo de MATLAB. Este es un modo adecuado de operación cuando las sesiones son
cortas y no repetitivas, sin embargo, la potencialidad real de MATLAB se basa en su
habilidad para ejecutar de manera secuencial una gran cantidad de comandos
almacenados en un archivo. Estos son llamados archivos M, porque precisamente la
extensión para que MATLAB los ejecute debe ser M.

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Un programa script es un archivo cuya extensión es M. Los programas script son


archivos de texto que pueden ser escritos utilizando cualquier editor de textos.

Para escribir un programa script, proceda de la manera siguiente, estando en MATLAB,


en la esquina superior izquierda aparece una hoja en blanca dele click a ese icono y le
abrirá el editor de Matlab. Estando ahí escriba su programa script, al terminar lo guarda
con un nombre de su elección y para correr el programa puede hacerlo de dos formas,
una desde el editor haciendo click en el icono de flecha de color verde y otra desde
Matlab, simplemente escribiendo el nombre del archivo.

Un programa script es un archivo que contiene una secuencia de instrucciones ó


funciones que deberá de ejecutar MATLAB. Es importante recordar que deberá
guardarse con extensión. M, para llamar a un programa script desde MATLAB solo se
teclea el nombre del archivo.

Se muestra un ejemplo de un programa script para graficar la función y(t)=seno(alfa*t)


donde alfa es un parámetro que se desea variar, se va guardar como ejl.m.

Programa script para graficar la función y=seno(alfa*t).El valor de alfa deberá existir en
el espacio de trabajo de Matlab antes de llamar a este archivo

% Programa Seript para graficar la función y(t)=seno(alfa*t)

% El valor de alfa deberá darse en el espacio de trabajo

% antes de llamar a este archivo

t=[0:0.01:1];

y=sin(alfa*t);

plot (t,y)

xlabel(‘tiempo [segundos]’)

ylabel(‘y(t)=seno(alfa *t’)

grid

Como se observa en el programa anterior, los comentarios en los programas script


deben empezar con el signo de por ciento (%), utilizando la función help se pueden

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

mostrar los comentarios del titulo y de esta manera saber las características del
programa script.

» help ej1

MATLAB responde automáticamente generando la gráfica, el valor de alfa deberá


introducirse a MATLAB antes de llamar al programa script, se obtienen dos gráficas
para los valores de alfa =10 y 50 , como se muestran en las siguientes figuras:

Para ejecutar el programa script ej1.m haga lo siguiente en el espacio de trabajo de


MATLAB

» alfa=10;

» ej1

Figura 2.9 Gráfica de y=seno(alfa*t) para alfa=10

Ahora teclee lo siguiente para aumentar la frecuencia de la señal

» alfa=50

» ej1

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Figura 2.10 Gráfica de y=seno(alfa*t) para alfa=50.

Ahora deberá responder el cuestionario 1 para fundamentos de Matlab siguiente:

1. Que es MATLAB

2. Que es un TOOLBOX

3. Cuál es el prompt en MATLAB

4. En MATLAB para que se usa el signo de igual

5. Si se teclea z=4 + j5, que es lo que da Matlab por respuesta

6. Ahora teclee Z=4+5j, y utilice el comando abs(Z), que da Matlab por respuesta

7. Si no se quiere ver la respuesta en MATLAB, que debo teclear. Escriba un


ejemplo.

8. Realice las operaciones siguientes en Matlab:

Seno de pi

Cos de 180 grados

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

Cos de 45 grados

Sen pi/4

9. Que significa

Inf

NaN

10. Obtenga el determinante de la matriz siguiente:

𝒋𝒋𝒋𝒋. 𝟎𝟎𝟎𝟎𝟎𝟎 𝒋𝒋𝒋𝒋. 𝟎𝟎𝟎𝟎𝟎𝟎


𝐴𝐴 = � �
𝒋𝒋𝒋𝒋. 𝟎𝟎𝟎𝟎𝟎𝟎 𝟎𝟎. 𝟎𝟎𝟎𝟎 − 𝒋𝒋𝒋𝒋. 𝟎𝟎𝟎𝟎𝟎𝟎

Ahora deberá contestar el cuestionario de graficación siguiente:

1. Que obtiene si escribe en Matlab lo siguiente

>>q = [1 1 1;2 3 4;3 5 7;4 7 10]

>>plot(q)

Y si escribe

>>x = [0 1 3 6]

plot(x)

Qué opina de las dos graficas obtenidas:

2.- Escriba un archivo script lo siguiente y explique cada línea que es lo que hace corra
el programa y comente lo que obtiene.

clear all

clf

str = 'sin'

t = linspace(0,2*pi);

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

q = feval(str,t);

plot(t,q)

3.- Grafique en la frecuencia la función de transferencia siguiente

F(s)= 1/(s+5) tip: sustituya s por jw, dele valores a w y grafique.

Recuerde que debe poner conclusiones a su trabajo

clc, clear all, close all

% F(s)=1/(s+5)

w=logspace(0.001,2,100);

for k=1:length(w)

Z=complex(5,w(k));

F=1/Z;

magF=abs(F);

magdB(k)=20*log10(magF);

end

semilogx(w,magdB)

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ


CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

FORMATO DE PONDERACION DEL REPORTE

ENRIQUECER MARCO 10
TEORICO

ASISTENCIA 20

HACER LO MARCADO EN LA 10
PRACTICA

EVIDENCIA FOTOGRAFICA 20

CUESTIONARIO 20

CONCLUSIONES 10

PORTADA 10

Ricardo Francisco Sigala Monterrosas


11:31
https://www.youtube.com/watch?v=gHddHJeuKtA&list=LL&index=2

CONTROL I PRACTICA 1 M. C. BENITO BÁEZ SÁNCHEZ

También podría gustarte