Sunteți pe pagina 1din 101

MATLAB - SIMULINK

2015 - I

Introduccin
Los grandes avances de la ingeniera moderna se han apoyado enormemente en
el uso de las herramientas computacionales, estas facilitan y agilizan los procesos
iterativos de clculo, permiten realizar simulaciones y el manejo ptimo de gran
cantidad de informacin. Aunque comercialmente se encuentran paquetes
computacionales que realizan labores muy especializadas en ingeniera
(AutoCAD, Solid Edge, Working Model, etc.) es necesaria la formacin de
profesionales en el manejo de las estructuras bsicas de programacin. Estas le
permiten solucionar problemas especficos y generar sus propios programas o
algoritmos de solucin.
Las herramientas programables, tambin son muy tiles en el proceso de
formacin del profesional, porque se reduce el tiempo de clculos manuales,
permitiendo un mejor anlisis y comprensin de los problemas. Es normal cometer
errores mientras se realiza cualquier calculo, por lo tanto es necesario revisar de
nuevo el problema, y esto implica realizar de nuevo todas las operaciones del
mismo, duplicando el tiempo necesario para realizar el ejercicio o resolver el
problema. De esta forma, la aplicacin de algoritmos computacionales permite
identificar fcil y rpidamente errores obtenidos en el proceso de anlisis; y en los
procesos de diseo, permiten realizar iteraciones en busca de la mejor opcin
(optimizacin).
MATLAB es un software para realizar clculos en ingeniera, ciencias y
matemticas aplicadas. Este ofrece un potente lenguaje de programacin,
excelentes grficas y un amplio rango de aplicaciones cientficas especializadas.
MATLAB es publicado y una marca registrada de The MatWorks, Inc.

Contenido
Tema 1: Introduccin al Matlab
Tema 2: Uso de los comandos bsicos
Tema 3: Vectores y matrices. Conceptos Bsicos
Tema 4: Empezando a trabajar con ficheros .m
Tema 5: Introduccin a los grficos en 2 Dimensiones
Tema 6: Introduccin a los grficos en 3 Dimensiones
Tema 7: Programacin con Matlab
Tema 8: Tratamiento de datos. Ficheros
Tema 9: Otros temas de aplicacin
Tema 10: Simulink

Tema 1: Introduccin al Matlab


1. El programa Matlab
Matlab resulta un entorno de trabajo tcnico que permite el desarrollo
de clculo numrico y simblico muy adecuado para el mundo cientfico y de
ingeniera. Representa adems un lenguaje de programacin de alto nivel y se
completa con una amplia coleccin de paquetes especficos para aplicaciones
determinadas en campos de la ciencia y la tcnica. Son las toolboxes.
Se caracteriza por su apertura para relacionarse con otros entornos
entre los que podemos destacar el Excel o el C al que puede ser traducido de
forma inmediata. Como su nombre indica, MATLAB es el nombre abreviado de
MATrix LABoratory, MATLAB es un programa para realizar clculos numricos
con vectores y matrices. Puede tambin trabajar con nmeros tanto reales como
complejos, con cadenas de caracteres o con estructuras ms complejas.
Para ciertas operaciones es muy rpido, sobre todo si se aprovechan
sus capacidades de vectorizacin.
Destacar por Ultimo que el mdulo bsico de Matlab ofrece amplias
opciones a la hora de realizar grficos.
2. El entorno de trabajo
En este texto nos centraremos en el Matlab 6.5. Destacar que el trabajo
con otras versiones es prcticamente igual y puede hacerse siguiendo este
texto.
MATLAB se puede arrancar como cualquier otra aplicacin de
Windows, clicando dos veces en el icono correspondiente en el escritorio o por
medio del men Inicio. Al arrancar MATLAB, despus de la aparicin de una
pantalla temporal, se abre otra del tipo de la indicada en la figura 1 donde se
pueden destacar los siguientes elementos (si no se obtiene esta pantalla
elegir del men View: Desktop Layout: Default):

Figura 1

1. La parte ms importante de la ventana inicial es la Command Window, que


aparece a la derecha. En esta sub-ventana es donde se ejecutan los comandos
de MATLAB. Esto se realiza a continuacin del prompt caracterstico (>>),
que indica que el programa est preparado para recibir instrucciones.
2. En la parte superior izquierda de la pantalla aparecen dos ventanas tambin muy
tiles (se puede cambiar de una a otra por medio de la pestaa) son la
ventana Launch Pad, que se puede alternar con Workspace.
Launch Pad da acceso a todas las componentes de MATLAB que se
tengan instalados: Help, Demos, etc.
El Workspace contiene informacin sobre todas las variables que se hayan
definido en esta sesin. Esta pantalla resulta muy til a la hora de trabajar
como se ir viendo en los sucesivos captulos.
3. En la parte inferior izquierda aparecen otras dos ventanas, Command History y
Current Directory, con el mismo sistema de pestaas para cambiar de una a
otra. En Command History se muestran los ltimos comandos ejecutados. Estos se
pueden volver a ejecutar haciendo doble clic sobre ellos.
Current Directory muestra los ficheros del directorio desde el que se trabaja. Se puede
alterar este directorio desde la propia ventana o desde la barra de herramientas,
debajo de la barra de mens con los mtodos de navegacin de Windows. Como se
estudiar, esta ventana resulta de gran utilidad para ejecutar desde ella ficheros creados
por el usuario.
Nota: Si la pantalla obtenida no es exactamente la deseada, se pueden visualizar las
pestaas activando los correspondientes elementos en el men View.

2.1. La ventana de trabajo: Command Window


Esta ventana es la ms importante del programa. Comn a todas las versiones
del Matlab es donde se realizan las operaciones.
Las entradas a ejecucin se escriben a continuacin del smbolo >> y se
ejecutan pulsando Enter.
Debemos pensar que Matlab est creado para realizar tareas y guardar los
resultados o programas que nos llevan a ellos. No se trata de un editor donde ir
escribiendo el trabajo realizado. Por ello en esta pantalla no se nos permitir volver
atrs y rectificar. Todo lo realizado va quedando en ella hasta que decidamos borrarlo.
Existen maneras de recuperar lo escrito para no tener que volver a escribirlo si
deseamos corregir o volver a ejecutar:
- Puede hacerse con las flechas del teclado:
Con ellas se recupera lo escrito con
anterioridad en la lnea del >> pudindose corregir y volver a ejecutar.
- Pinchando dos veces en la lnea correspondiente del Command History.
Esto permite la ejecucin inmediata de lo elegido.
- Pinchando con el botn derecho del ratn sobre la sentencia ejecutada en
el Command Window. Esto permite volver a ejecutar dicha operacin,
copiarla, etc.
Si deseamos poner algn comentario lo haremos precedido de %.
Si de todas formas queremos guardar toda la sesin de trabajo realizada en un
determinado momento podemos seguir los caminos indicados en el tema 2, seccin 3.
La Ayuda en Matlab:
El programa dispone de una ayuda completa a la que se puede acceder si la
hemos instalado. Lo podemos verificar desde el Launch Pad y desplegarla pinchando
dos veces sobre ella: Help (figura 2).

Figura 2

A este mismo navegador de ayuda del Matlab se puede acceder a travs de la tecla ?
(figura 3).

Figura 3

A veces es ms cmodo visualizar los bloque bsicos de la ayuda en la


pantalla de trabajo e ir accediendo a lo que buscamos desde ella. Esto puede hacerse
de la siguiente forma:
Al escribir help en la lnea de trabajo aparecen los tpicos de informacin
general:
>> help

Tecleando help seguido del nombre de alguna de ellas se accede a su


contenido. Por ejemplo:
>> help Matlab\elfun

Elementary math functions.


Trigonometric.
sin

- Sine.

sinh

- Hyperbolic sine.

asin

- Inverse sine.

asinh

- Inverse hyperbolic sine.

cos

- Cosine.

cosh

- Hyperbolic cosine.

acos

- Inverse cosine.

acosh
tan

- Inverse hyperbolic cosine.


- Tangent.

tanh

- Hyperbolic tangent.

atan

- Inverse tangent.

atan2

- Four quadrant inverse tangent.

atanh

- Inverse hyperbolic tangent.

sec

- Secant.

sech

- Hyperbolic secant.

asec

- Inverse secant.

asech

- Inverse hyperbolic secant.

csc

- Cosecant.

csch

- Hyperbolic cosecant.

acsc

- Inverse cosecant.

acsch

- Inverse hyperbolic cosecant.

cot

- Cotangent.

coth

- Hyperbolic cotangent.

acot

- Inverse cotangent.

acoth

- Inverse hyperbolic cotangent.

Exponential.
exp

- Exponential.

log

- Natural logarithm.

log10

- Common (base 10) logarithm.

log2

- Base 2 logarithm and dissect floating point number.

pow2

- Base 2 power and scale floating point number.

realpow - Power that will error out on complex result. reallog - Natural logarithm of real number.
realsqrt - Square root of number greater than or equal to zero. sqrt

- Square root.

nextpow2 - Next higher power of 2.


Complex.
abs

- Absolute value.

angle

- Phase angle.

complex - Construct complex data from real and imaginary parts.


conj
imag
real

- Complex conjugate.
- Complex imaginary part.
- Complex real part.

unwrap
isreal

- Unwrap phase angle.


- True for real array.

cplxpair - Sort numbers into complex conjugate pairs.


Rounding and remainder.
fix

- Round towards zero.

floor

- Round towards minus infinity.

ceil

- Round towards plus infinity

round

- Round towards nearest integer.

mod

- Modulus (signed remainder after division).

rem

- Remainder

sign

- Signum.

after division.

Tecleando help seguido del nombre de un comando concreto se obtiene


informacin sobre l. Por ejemplo:

>> help sin

SIN Sine.
SIN(X) is the sine of the elements of X.

Overloaded methods

2.2. Workspace
Esta ventana del espacio de trabajo permite la visualizacin de las variables
almacenadas en memoria. Da una informacin completa sobre ellas: nombre, tipo,
tamao y clase
Pinchando dos veces en la variable se accede al Array editor donde se nos

10

permite modificar la variable en cuestin (figura 4).

Figura 4

Cuando se introduzcan las variables en el tema 2 volveremos sobre esta


ventana que ser de gran utilidad. Desde ella se pueden guardar las variables para
cargarlas en sucesivas sesiones de trabajo, borrar variables, etc.
3. Los distintos tipos de ficheros en Matlab
A travs del men File, en el submen New, podemos ver que el programa nos
ofrece, entre otros, la posibilidad de trabajar con ficheros M-file o de Figure (figura 5).
En los captulos siguientes iremos desarrollando cada uno de estos ficheros y sus
funciones.

11

Figura 5

A modo introductorio decir que:


- En los ficheros Figure se guardarn las figuras que el programa nos permite
realizar. Sern ficheros con extensin .fig.
- Los ficheros M-Fife tienen gran utilidad en el programa. Se abren por defecto al
pinchar en el botn de nuevo fichero en la barra de herramientas. Son ficheros que
contienen conjuntos de comandos o definicin de funciones y al teclear su nombre
en la lnea de comandos y pulsar intro, se ejecutan uno a uno todos los comandos
contenidos en l. Siempre y cuando dicho fichero se encuentre en el directorio
actual o est incluido en el Path de Matlab.

- Existen otros ficheros de gran importancia, los de extensin .mat donde se


guardarn las variables deseadas que han sido creadas durante el trabajo.

12

Prctica 1: Introduccin al Matlab


1. Entrar en el programa Matlab. Preparar la pantalla con la ventana de trabajo o
Command Window, el Workspace, el Command History y el Current Directory.
2. Escribir el comentario: Empezamos a trabajar
3. Realizar las siguientes operaciones: 2+2, 2/5, 2x4
4. Volver a ejecutar 2+2 sin necesidad de volver a teclear la operacin.
5. Utilizar la ayuda para realizar las siguientes operaciones: sen(pi), log(3), sqrt(3)
6. Introducir una variable a con el valor 1.234
7. A travs del Workspace visualizar si dicha variable ha sido tomada por el
programa 13 y modificar su valor a 1.125.

13

Tema 2: Uso de los comandos bsicos


1. Nmeros y operaciones bsicas
El programa trabaja con diferentes tipos de nmeros y expresiones numricas:
nmeros enteros, racionales, reales y complejos.

Operaciones bsicas
Comenzaremos realizando con el programa las operaciones ms bsicas entre
nmeros. Trabajamos en la ventana de Command window y para ello se utilizan las
convenciones matemticas estndar.
Por ejemplo, para sumar (figura 6):
>> 2+2
ans 4

Figura 6

14

Nota: La respuesta de Matlab se realiza a travs de una variable que va cambiando de


valor y que guarda el ltimo resultado ejecutado. Verificarlo en el workspace.

En general las operaciones bsicas a realizar se hacen segn la siguiente tabla


y con la jerarqua habitual entre ellas:

a+b

Suma

a-b

Resta

a*b

Producto

a/b

Divisin

a^b

Potencia

Nota: Por defecto Matlab trabaja con unos dgitos de aproximacin para nmeros
decimales. Esto puede cambiarse.

Estableciendo la precisin de los clculos


MATLAB trabaja siempre en doble precisin, es decir, guardando cada dato en
8 bytes, con 15 cifras decimales exactas. El formato con el que los datos aparecen en
pantalla es variable. Existen varios modos de trabajo, se indican a continuacin los
ms significativos:

format short

punto fijo con 4 decimales

format long

punto fijo con 14 decimales

format short e

4 decimales y forma exponencial.

format long e

15 decimales y forma exponencial.

format rat

formato racional.

El modo de trabajo por defecto en MATLAB es format short.

Ejemplos:
>>3^100
5.1538e+047
>>5+pi
8.1416

15

>>format short e
>>3^100
5.1538e+047
>>5+pi
8.1416 e+000
>>format long
>>3^100
5.153775207320113e+047
>>5+pi
8.14159265358979
>>format long e
>>3^100
5.153775207320113e+047
>>5+pi
8.141592653589793e+000
>> format rat
>> 5+pi
920/113

Tecleando format se vuelve al formato por defecto, es decir, format short.

Nmeros complejos
Matlab integra perfectamente el trabajo con nmeros complejos. La letra
minscula i j representa el nmero imaginario

1 (la unidad imaginaria). De esta

manera los nmeros complejos se representan mediante expresiones del tipo a+bi
a+bj.

Existen funciones especficas que actan sobre los nmeros complejos:


real(z):

obtiene la parte real de z.

imag(z):

obtiene la parte imaginaria de z.

conj(z):

obtiene el complejo conjugado de z.

abs(z):

obtiene el mdulo de z.

angle(z):

obtiene el argumento de z.

16

2. Variables
Las variables en Matlab tienen forma matricial: fila y columna. As, si
trabajamos con una variable unidimensional se crea con la forma de una fila y una
columna. Para hacerlo slo debemos teclear el nombre elegido e igualarlo a su valor:
>> a=8

Alterar el valor de una variable:


Matlab guarda el valor de la variable ejecutada en ltimo lugar, es decir si
volvemos a ejecutar un valor para a ste ser el que mantiene.
Podemos alterar el valor de una variable desde el workspace. Para ello
pincharemos en ella en la ventana del workspace y cambiaremos su valor desde el
editor (figura 7):

Figura 7

Guardar variables y recuperarlas


Normalmente es de gran inters guardar los valores de las variables con las
que se ha trabajado en una sesin. Bien porque debe interrumpirse la misma y quiere
recuperarse ms adelante, o bien para utilizarse en nuevos trabajos relacionados con
el que se ha realizado.
La forma ms bsica de guardar las variables es a travs del men File o del
botn de guardar situado en la ventana del Workspace (figura8):

17

Figura 8

O a travs de del men desplegado al pinchar con el botn derecho del ratn sobre la
variable situada en el Workspace (figura 9). Esta opcin nos permite guardar slo las
variables seleccionadas. Destacar que esto tambin ofrece la posibilidad de eliminar la
variable. Algo que puede hacerse de forma global desde el men Edit, submen Clear
Workspace.

Figura 9

Realizar cualquiera de estos procesos nos permite crear un fichero de


extensin .mat con el nombre deseado cuyo contenido sern las variables que se

18

quieren guardar. Al hacerlo, si lo guardamos en el directorio actual aparecer dicho


fichero en la lista de los que tenemos a nuestra disposicin.
Si en una nueva sesin queremos recuperar dichas variables slo tenemos que
cargar el fichero .mat, bien pinchando dos veces sobre su nombre en la ventana del
directorio actual o bien a travs del men File, submen Open.

3. Guardar sesiones de trabajo


Existen varios caminos para guardar lo realizado en una sesin de trabajo o en
parte de ella:
- Copiar la parte que nos interese del Command Window y abrir un fichero .m. (figura
10).

Figura 10

Aparece entonces una nueva ventana (figura 11):

Figura 11

19

En ella podemos pegar lo seleccionado y modificar cuantas cosas queramos. Este


fichero se guarda y se puede acceder a l cuando se desee. Debemos tener en cuenta
que segn lo realizado se trata de un fichero de texto, no es ejecutable.

- Con los comandos diary fichero.dia


diary off
Se trata de escribir al comienzo de la parte que deseamos guardar diary seguido del
(nombre del fichero donde guardaremos el trabajo).dia. Al finalizar terminaremos
escribiendo diary off. Veremos que se ha creado un fichero que podemos visualizar
escribiendo type fichero, lo que nos recupera en la pantalla su contenido, o pinchando
dos veces sobre l en el current directory, lo que nos abre una pantalla con su
contenido donde podemos modificar, escribir, etc.

4. Variables carcter
Una cadena de caracteres determinan una variable carcter. Su sintaxis es:
a=cadena de caracteres
Como vemos es necesario incluir los caracteres entre comillas.
Se destacan algunos comandos importantes que manejan este tipo de
variables y que se irn usando en temas sucesivos:

str2mat(x1,x2,...):

Forma una matriz cuyas filas son las cadenas de

caracteres x1, x2,..., respectivamente.


str2num(x1,x2,...):

Convierte la cadena de caracteres en su valor numrico

exacto utilizado por Matlab.


num2str(nmero): Convierte el nmero exacto en su cadena de caracteres
equivalente con la precisin fijada
eval(expresin): Ejecuta la expresin.
disp(cadena): Muestra la cadena tal y como se ha escrito y continua el
proceso.
input(`cadena): Muestra la cadena en pantalla y espera que se presin de una
tecla para continuar.

Veamos algunos ejemplos:

20

>> num2str(pi)
ans =
3.142
Se ha convertido el nmero exacto pi en cadena de caracteres.

>> str2num(15/14)
ans =
1.0714
Se ha convertido una cadena a su valor exacto con la precisin por defecto.

>> str2mat(la primera,la dos,telemadrid,antena 3,telecinco)


ans =
la primera
la dos
telemadrid
antena 3
telecinco
Se ha formado la matriz de texto cuyas filas son las cadenas introducidas como los
argumentos de str2mat.

>> disp(hola)
ans =
hola
Se ha obtenido en pantalla la palabra escrita como argumento del comando.

21

Prctica 2: Uso de los comandos bsicos


1. Calcular 3+5 y 7/8 en una misma orden.
2. Realiza la operacin 174/13.
3. Ofrece la operacin anterior con 14 cifras decimales, en forma de nmero
racional y en forma exponencial.
4. Volver al formato short.
5. Definir las siguientes variables: a=2x8, b=45/6, c=a+b.
6. Guardar las variables a y b en un fichero.
7. Borrar el valor de todas las variables creadas.
8. Recuperar a y b.
9. Utilizando el comando help, acceder a la ayuda correspondiente a las
funciones matemticas, extrayendo la informacin necesaria para realizar la
siguiente operacin: c = (log 2 7) 4 +

b tan( / 3) + e a

10. Asignar a la variable d el valor 34 y calcular el coseno de d al cubo. Hacerlo de


forma que se ejecuten las dos operaciones pero slo se muestre el ltimo
resultado.
11. Guardar todas las variables.
12. Guardar la sesin en un fichero .m.
13. El trabajo a realizar en los ejercicios siguientes debe guardarse en un archivo
.dia.
14. Introducir los nmeros complejos z=2-3i, u=-1+2i
a. Calcular parte real e imaginaria de z
b. Determinar argumento y mdulo de u
c. Calcular z+u y zxu
15. Introducir los complejos z= 3 + i , w=

1
3
+
i . Calcular zxw y z/w.
2
2

22

Tema 3: Vectores y matrices. Conceptos


bsicos
1. Definicin
Matlab est fundamentalmente orientado al trabajo y el clculo matricial.
Veremos que las operaciones estn definidas para el trabajo con este tipo de
elementos. Antes de empezar a manejar y operar con ellas veamos cmo se definen.
Como en casi todos los lenguajes de programacin, en Matlab las matrices y
vectores son variables a las que se les puede dar nombres. Para definir una matriz no
hace falta establecer de antemano su tamao (de hecho, se puede definir un tamao y
cambiarlo posteriormente). Matlab determina el nmero de filas y de columnas en
funcin del nmero de elementos que se introducen (o se utilizan). Las matrices se
definen con los elementos entre corchetes y por filas; los elementos de una misma fila
estn separados por blancos o comas, mientras que las filas estn separadas por
pulsaciones intro o por caracteres punto y coma (;).
Por ejemplo, el siguiente comando define una matriz A de dimensin (3x3):

>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es:
123
456
789

Veamos en el Workspace como las almacena Matlab (figura 12):

23

Figura 12

A partir del momento en que tenemos definidas diversas matrices, se pueden


operar. Matlab puede hacer esto por medio de operadores o por medio de funciones.

2. Operaciones elementales
Operaciones bsicas como suma, producto o trasposicin de hacen como se
muestra

continuacin,

permitindose

algunas

operaciones

no

definidas

matemticamente:

Operador suma (+)


Utilizado entre matrices de iguales dimensiones, obtiene la suma elemento a
elemento. Utilizado entre una matriz y un escalar, suma el escalar a cada elemento de
la matriz.
Operador resta (-)
Idntico a la suma en su utilizacin.
Operador producto (*)
Utilizado entre matrices calcula el producto matricial. Las dimensiones de las
matrices deben ser congruentes. Utilizado entre una matriz y un escalar, multiplica el
escalar por cada elemento de la matriz.
Operador producto elemento a elemento (.*)
Se utiliza entre dos matrices de iguales dimensiones y multiplica elemento a
elemento, obteniendo otra matriz de igual dimensin.
Operador potenciacin (^)

24

Si c es un entero y A es una matriz cuadrada, A^c calcula el producto A*A*A


.............. *A, c veces.
Operador potenciacin elemento a elemento (.^)
A.^B da como resultado una matriz cuyo elemento ij es aij^bij.
A.^c da como resultado una matriz cuyo elemento ij es aij^c.
c.^A da como resultado una matriz cuyo elemento ij es c^aij.
Operador divisin (/) (\)
En Matlab existe el operador divisin a la derecha (/) y divisin a la izquierda
(\).
La utilizacin entre matrices es la siguiente:
-

\ divisin-izquierda: A\B
Si A es cuadrada A\B=inversa(A)*B. Si A no es cuadrada A\B es la solucin en
el sentido de mnimos cuadrados del sistema AX=B.

/ divisin-derecha: A/B
Si B es cuadrada A/B=A*inversa(B). Si B no es cuadrada, A/B es la solucin del
sistema XB=A.

Operador divisin elemento a elemento (./) (.\)


A./B da como resultado una matriz cuyo elemento ij es aij /bij.
A.\B da como resultado una matriz cuyo elemento ij es bij /aij.
Operador traspuesta ()
A da como resultado la matriz transpuesta de A.

3. Operaciones por medio de funciones


En men de la ayuda: matlab\elmat - Elementary matrices and matrix
manipulation y matlab\matfun - Matrix functions - numerical linear algebra, se pueden
encontrar las diversas funciones que se aplican a las matrices. Destacamos las ms
elementales como:
inv(A) da como resultado la matriz inversa de A.
det(A) da como resultado el determinante de A.
trace(A) da como resultado la traza de A.
rank(A) da el rango de A

Debe destacarse que la mayora de las funciones definidas en el programa se


ejecutan sobre cualquier matriz aplicndose elemento a elemento.
Por ejemplo:
>> Sin(A)

25

Ofrece como respuesta una matriz del mismo tamao que A cuyos elementos
son el seno del correspondiente elemento de A:
0.8415

0.9093

0.1411

-0.7568 -0.9589 -0.2794


0.6570

0.9894

0.4121

4. Otras formas de definir matrices


Algunas veces, introducir matrices por el teclado no es prctico. Veremos otras
formas ms potentes de generar matrices que luego, tras modificaciones nos pueden
llevar a definir la que nos interesa. Los comandos a utilizar se encuentren en
matlab\elmat.
Algunas de estas funciones son las siguientes:
eye(n) forma la matriz identidad de tamao (nxn)
zeros(m,n) forma una matriz de ceros de tamao (mxn)
zeros(n) forma una matriz de ceros de tamao (nxn)
ones(n) forma una matriz de unos de tamao (nxn)
ones(m,n) forma una matriz de unos de tamao (mxn)
rand:

este

comando

genera

nmeros

pseudoaleatorios

distribuidos

uniformemente entre 0 y 1. Cada llamada proporciona un nuevo nmero.


rand(n): genera una matriz de nmeros pseudoaleatorios entre 0 y 1, con
distribucin uniforme, de tamao nxn.
rand(m,n): igual que en el caso anterior pero de tamao mxn.

5. Manipulacin de matrices
Con este programa es posible crear matrices a partir de una dada, extraer o
cambiar elementos de una matriz y, en general, manipular de casi cualquier forma
estos elementos. Veamos los diversos caminos para realizarlo:
-

Crear una nueva matriz que reciba alguna caracterstica o propiedad de la de


partida

Componer una matriz a partir de submatrices ms pequeas.

Mediante la manipulacin de los elementos de la matriz de partida.

Caractersticas de una matriz:

26

Destacamos algunos comandos que permiten trabajar con las caractersticas o


elementos de una matriz de partida:
size (A), length(A) nos dan informacin sobre las caractersticas de la matriz
A, en este caso dimensin de la matriz o longitud del vector.
zeros (size(A)) genera una matriz de ceros del mismo tamao que A.
ones(size(A)) lo mismo con matriz de unos
A=diag(x) devuelve una matriz diagonal cuyos elementos de la diagonal son
los del vector x.
triu(A) y tril(A) forman matrices triangulares superiores e inferiores a partir de
la matriz A.

Composicin de matrices
Crear una matriz a partir de submatrices es algo muy sencillo para el programa
que sin embargo es de mucha utilidad por ejemplo a la hora de aadir datos o ampliar
informacin.
Si contamos con la submatrices A=[1 2; 3 4] y B=[1,6], C=[A; B] genera la
matriz:
12
34
16
Si tenemos con los vectores u=[1 2 3 4] y v=[1 6], w=[u v] devuelve:
w=[1 2 3 4 1 6]

Manipulacin de elementos
Veremos como extraer, cambiar o eliminar elementos o lneas (filas o columnas
de una matriz).
Dado un vector x, la ejecucin de x(i) devuelve el elemento situado en la
posicin i de ese vector.
En el caso matricial A(i,j) devuelve el elemento situado en la fila i columna j de
la matriz A.
El operador (:) es de gran importancia en Matlab. Puede decirse que es un
operador que respeta el rango. Veamos su utilidad con algunos ejemplos:
>> x=1:10
x=
1

10

>> x=[0:2:10]
x=

27

10

El primer nmero indica el valor inicial, el segundo el paso del incremento y el


tercero el elemento final. Como hemos visto si se omite el intermedio, por defecto se
toma la unidad.

Nota: En general, el operador genera vectores fila. Conocido este operador, podemos
decir que con l es posible definir variables vectoriales:
x= [p:q] general un vector de primer elemento p, ltimo q y los elementos intermedios
se diferencian en una unidad
x= [p:i:q]

devuelve un vector de primer elemento p, ltimo q y los elementos

intermedios se diferencian en i unidades.


Destacar tambin el comando linspace: x=linspace(p,q,n) genera un vector de n
elementos uniformemente espaciados desde p hasta q.

A esto se le puede dar gran nmero de aplicaciones:

Recordando que el vector x es: x=[1 2 3 4 5 6 7 8 9 10]:


>> x(1:4)
ans =
1

>> A=[1 2;3 4;5 6]


A=
1

>> A(1,:)
ans =
1

>> A(:,2)
ans =
2
4

6
28

Prctica 3: Matrices y vectores


1. Introducir los vectores (1 2 3 4 5) y (6 7 8 9 10) asignndoles las variables u y v
respectivamente:
a. Determinar 3u, u+v, u-v.
b. Construir un vector cuyos elementos sean los de v incrementados 3
unidades.
c. Determinar un vector de elementos el resultado de multiplicar cada
elemento de u por el correspondiente de v.
d. Calcular un vector de elementos los de u elevados al cubo.
e. Calcular un vector cuyos elementos sean el resultado de elevar cada
elemento de u al elemento de v correspondiente.

2 5 7
1 2 1

3 1
2. Introducir las matrices A = 5 4 3 , B = 4
8 1 3
7 1 0

a. Calcular A+B, AB, A4


b. Determinar una matriz cuyos elementos sean el resultado de multiplicar
cada elemento de A por el correspondiente de B.
c. Determinar una matriz cuyos elementos sean el resultado de dividir
cada elemento de A por el correspondiente de B.

3. Determinar si es posible:
a. La inversa de A y de B. Verificar que el producto de una matriz por su
inversa es la matriz identidad.
b. La traza de B.
c. El determinante y el rango de A.

4. Una empresa compra los siguientes artculos:

Referencia artculo

Cantidad de artculo

Precio de la unidad (sin IVA)

100

200

190

101

150

345

102

500

69

103

49

598

29

a. Introducir la tabla en mediante tres vectores: referencia, cantidad y


coste.
b. Determinar el coste total de cada producto.
c. Construir una tabla con cada artculo y su coste total.
d. Calcular el coste total a pagar por la empresa incluyendo un 16% de
IVA
5. Introducir los vectores u=(2,3,4) y v=(3,-4,8).
a. Determinar la suma y el producto de todos los elementos de u.
b. Calcular el mximo y mnimo de los elementos de v, as como el lugar
donde estn situados.
c. Calcular el producto escalar de u y v.
d. Determinar el mdulo de los vectores.
6. Construir los vectores cuyos elementos sean:
a. Los nmeros naturales comprendidos entre el 10 y el 100.
b. (-1, -0,8, -0.6,............, 1.6, 1.8, 2).
c. Desde el 1 hasta el 3 igualmente espaciados y con un total de 38
elementos.
7. Dados u=(1,2,3), v=(4,5,6),
a. Construir el vector (0,1,2,3) a partir de u.
b. Construir el vector de elementos los de u y v
8. Construir un vector w con los cuadrados de los 15 primeros nmeros naturales.
a. Extraer el cuadrado de 7.
b. Extraer los cuadrados de los elementos que van desde el 2 al 6 ambos
inclusive.
c. Extraer los cuadrados de los elementos que van desde el 7 al 13 ambos
inclusive en sentido inverso
d. Construir, a partir de w un vector con los cuadrados de 1, 3, 7,14.

4
2 8 3

2
4 2
1
9. Introducir la matiz A =
6 9
1 3

5
7 4 0

a. Extraer el elemento a23.


b. Sustituir el elememto a22 por 100.
c. Construir una submatriz de A formada por las filas 2, 3 y 4 y las
columnas 1, 2 y 3 de A.
d. Extraer la fila 3 de A.
e. Extraer la columna 1 de A.

30

f.

Construir una matriz formada por las filas 1, 2 y 3 de A.

g. Construir una matriz formada por las filas 1 y 4 de A.


10. Construir una matriz A cuadrada aleatoria de orden 3.
a. Obtener su inversa, su transpuesta y su diagonal.
b. Transformarla en una matriz triangular inferior.
c. Obtener la suma de los elementos de la primera fila, de la segunda
columna y de la diagonal.
11. Estudiar, segn el teorema de Rouche-Frobenius, y resolver el sistema:

x + 2 y + 3z = 6
x + 3 y + 8 z = 19

2 x + 3 y + z = 1
5 x + 6 y + 4 z = 5
x + 3 y + 5z + t = 1
2 x + y + 3z + t = 2

12. Resolver el sistema


utilizando:
4 x + y + 2 z + 2t = 1
5 x + y + 2 z + 3t = 5
a. La matriz inversa de los coeficientes si existe.
b. El operador divisin izquierda.

31

Tema 4: Empezando a trabajar con


ficheros .m
1. Introduccin
Como ya se coment en el punto 3 del tema1, en Matlab tienen especial
importancia los ficherosM de extensin .m. Contienen conjuntos de comandos a
ejecutar o definicin de funciones y se ejecutan al teclear su nombre en la lnea de
comandos y pulsar intro (si se encuentra en el Current Directory) o al pinchar sobre l
en Current Directory con el botn derecho del ratn y elegir run. Representan el centro
de la programacin en Matlab.
Un fichero .m puede llamar a otros ficheros .m y ficheros de comandos pueden
ser llamados desde ficheros de funciones. En estos casos es importante tener en
cuenta la definicin de las variables a utilizar, en la lnea de que tengan un tratamiento
local o global. Por defecto, Matlab considera las variables locales, es decir, aunque
varias funciones tengan la variable x, sta es diferente en cada caso a no ser que haya
sido definida como global.
Son ficheros de texto sin formato y que pueden crearse a partir de un editor de
textos, no obstante, lo mejor es utilizar el editor del propio programa al que se accede
por defecto al abrir un nuevo fichero.

2. Editor
Para crear un nuevo fichero .m elegimos new M-File del men File o elegimos
el icono correspondiente. Aparece entonces la pantalla del editor/Debugger donde
podemos ir escribiendo las sentencias.
En el caso de la figura 13 el fichero contiene comentario, dos sentencias y otro
comentario. Las sentencias seguidas de (;) no se mostrarn en pantalla al ejecutar el
fichero.

32

Figura 13

El editor muestra en diferentes colores los diferentes tipos de comandos:


-

Verde para los comentarios.

Rojo para las cadenas de caracteres.

Negro para las sentencias.

Una posibilidad de ejecutar el fichero es elegir Run del men Debug


(primeramente debe guardarse con un nombre). Es posible ejecutar el mismo por
partes incluyendo breakpoints lo que puede hacerse con el icono de los puntos rojos.
Si se tienen estos puntos de parada se continua de uno a otro con la opcin de
Continue. Es posible visualizar el valor que van tomando los distintos elementos del
fichero posndonos con el ratn sobre ellos (figura 14).

Es interesante ir conociendo los dems botones y mens del editor que nos
permite eliminar los breakpoints, terminar la ejecucin,.... Resulta muy til para
detectar errores y corregirlos y en general para programar

33

Figura 14

Si se desea modificar o visualizar un fichero .m ya creado, es suficiente con


abrirlo desde Open en el men File o hacer doble cick en su nombre desde el Current
Direcrory. Ambas opciones dan acceso al editor y al fichero.

Ya se ha introducido que existen dos tipos de ficheros .m. Se comentarn con


ms detalle cada uno de ellos.

3. Ficheros de comandos. Programas propios del usuario


Estos ficheros, tambin llamados scripts, contienen listas de comandos que se
ejecutan sucesivamente cuando se ejecuta dicho fichero, es decir cuando se escribe el
nombre del fichero en la lnea de comandos y se pulsa intro. Es importante destacar
que en estos ficheros, las variables que se crean pertenecen al espacio base del
Matlab, algo que no ocurre en los ficheros de funcin donde las variables pertenecen
slo al espacio de trabajo de esa funcin. Puede comprobarse esto ejecutando el
fichero del la figura 14.
Se ampliar el tratamiento de este tipo de ficheros en el captulo de programacin.

4. Definicin de funciones
En el tema 1 vimos que Matlab tiene definidas sus propias funciones, por
ejemplo Sin, Cos,... En general, el programa tiene un gran nmero de funciones
incorporadas, bien se trata de funciones intrnsecas, es decir, del propio cdigo
ejecutable lo que las hace muy rpidas y eficientes, o bien se trata de funciones
definidas en ficheros, normalmente .m, que vienen con el programa. A todo ello se

34

unirn las funciones creadas por el propio usuario. La importante diferencia de estas
ltimas es que, para que el programa pueda trabajar con ellas, el correspondiente
fichero .m debe estar en el directorio actual o en el path.
El trabajo con funciones y el propio concepto de funcin en Matlab es parecido
al que se tiene en C y en otros lenguajes de programacin. Toda funcin tendr:
-

Un nombre. Por ejemplo: f.

Unos argumentos. Van a continuacin del nombre y entre parntesis,


separados por comas si son ms de uno. Por ejemplo: f(x) f(x,y).

Unas salidas o retornos que son el resultado de la funcin. La ventaja de


Matlab es que pueden ser valores matriciales mltiples que se recogern en
diversas variables que se agruparn entre corchetes. Por ejemplo: p=f(x)
[p,q]=f(x).

4.1. Funciones de librera


Ya conocemos, si no puede consultarse la ayuda, los diversos tipos de
funciones que tiene el programa. Se clasifican en:
-

Funciones matemticas elementales.

Funciones especiales.

Funciones matriciales elementales.

Funciones matriciales especficas.

Funciones para la descomposicin y/o factorizacin de matrices.

Funciones para anlisis estadstico de datos.

Funciones para anlisis de polinomios

Funciones para integracin de ecuaciones diferenciales ordinarias.

Resolucin de ecuaciones no-lineales y optimizacin.

Integracin numrica.

Funciones para procesamiento de seales.

Existen funciones (las matemticas trascendentes y algunas bsicas) que


actan sobre escalares o sobre cada elemento de una matriz. Por ejemplo:
>> sin(0)
ans =
0
>> A=[1 2 3]
A=
1

>> sin(A)

35

ans =
0.8415

0.9093

0.1411

>>

Existen otras que slo actan sobre vectores, no sobre escalares ni matrices.
Por ejemplo, max(x), min(x) devuelve el elemento mximo y mnimo de entre los
elementos del vector x. Tambin nos dan la posicin donde se encuentra.
>> A=[1 2 3]
A=
1

>> max(A)
ans =
3
>> [p,q]=max(A)
p=
3
q=
3
>>

De igual forma, otras funciones slo se aplican sobre matrices. Son las que se
encuentran en el grupo de funciones matriciales elementales, funciones matriciales
especiales y funciones de factorizacin y/0 descomposicin matricial. Por ejemplo
trace(A) que nos da la traza de la matriz A, [p,q]=eig(A) nos da los valores propios y
vectores propios asociados a la matriz A.

4.2. Funciones creadas por el usuario


La palabra function escrita al comienzo de un fichero .m nos permite definir una
funcin constituyendo una de las aplicaciones ms importantes del programa. Su
sintaxis es la siguiente:
function parmetros de retorno=nonbre de la funcin (argumentos)
cuerpo de la funcin
Es muy importante incidir en que los argumentos o variables de la funcin son
de carcter local, es decir, no interfieren con otras variables del mismo nombre que
hayan sido definidas en otra parte del programa, otros ficheros .m o en la ventana de
trabajo. Para que una funcin tenga acceso a variables que no se hayan definido como
parte de sus argumentos, stas deben definirse como globales tanto en el programa

36

principal como en los ficheros .m dnde se quiera tener en cuenta. El comando es


global x,y,.....

El siguiente ejemplo, figura 15, define una funcin f que calcula el cuadrado del valor
que se desee:

Figura 15

Es importante destacar:
-

En este caso existe un argumento o variable de entrada: x, y un retorno o


salida: p.

Si no ponemos los (;) despus de la definicin de funcin y el retorno, al


ejecutar desde la lnea de comandos, el resultado saldra por duplicado o
triplicado, el valor de f(x), el de p y el de ans.

Para finalizar debemos guardar el fichero. Al hacerlo, el programa por


defecto nos sugiere como nombre el de la propia funcin. Es aconsejable
usarlo para evitar confusiones entre los ficheros y las propias funciones.
Tambin debemos acordarnos de guardarlo en el directorio donde
trabajamos para tener acceso inmediato a la funcin. Si no lo hacemos as,
para utilizarla deberemos antes situarnos en el directorio donde la hayamos
grabado.

37

Es posible poner todos los comentarios necesarios para, en un futuro


recordar lo que hace esa funcin. Si tecleamos en la lnea de comandos
help seguido del nombre de la funcin, nos aparecern los comentarios que
en su da escribimos en dicho fichero (figura 16).

Figura 16

Destacar tambin que esta funcin se aplica sobre cualquier tipo de entrada
para la que est definida la operacin. En este caso si lo aplicamos sobre
un vector o una matriz no cuadrada nos dar un mensaje de error. S se
aplica sobre matrices cuadradas calcula el producto de dicha matriz por ella
misma. Si queremos que la funcin f se aplique sobre todo tipo de matrices
calculando el cuadrado de cada elemento es suficiente con definir la
operacin con el punto delante:
function p=f(x);
p=x.^2

4.2.1. Comandos eval y feval


El comando feval:
La evaluacin de una funcin tambin puede hacerse a travs del comando
feval cuya sintaxis es:
feval (nombre de la funcin, valor del argumento 1, valor del argumento 2, ....)

38

Por ejemplo, figura 17:

Figura 17

Si ejecutamos en la lnea de comandos:


>> [a,b]=feval('f',3,4)
a=
7
b=
-1
>>

El comando eval
Este comando se utiliza para trabajar con cadenas, algo que se coment en el
tema 1.
Supongamos que definimos una funcin como una cadena de caracteres desde
la lnea de comandos, para ello se utilizan las comillas:
>> f='x^2+5'
f=
x^2+5
El comando eval se utiliza como sigue:
>> x=3;

39

>> eval(f,x)
ans =
14
>>
De forma general se puede hacer:
>> x=3;
>> eval('x ^2+5',x )
ans =
14
>>
Existen algunas funciones relacionadas que trabajan de la misma forma. Tal es
el caso, por ejemplo de:
diff(f,x): Calcula la funcin derivada de f con respecto a x.
diff(f,x,n): Calcula la funcin derivada ensima de f con respecto a x.

Estos comandos entre muchos otros, forman el trabajo de clculo simblico del
programa.

Ejemplos:
>> diff('x^2','x')
ans =
2*x
Si declaramos primeramente la variable x como simblica:
>> syms x;
>> diff('x^2',x,3)
ans =
0

40

Prctica 4: Empezando a trabajar con ficheros .m


1. Construir una funcin que calcule el seno de cualquier valor ms 5. Utilizarla
para calcular sen(45)+5, sen(n)+5 con n los 10 primeros nmeros naturales.
2. Repetir el ejercicio anterior para el clculo del cubo de los valores.
3. Define la funcin g(x)=

x3 x
x2 +1

a. Calcula g(4).
b. Calcula g(x) siendo x=(-2, -1.9, -1.8,........1.8 ,1.9 ,2)
4. Construir una funcin que calcule el ngulo formado entre dos vectores.
5. Define una funcin que permute las filas i y j de una matriz.
6. Construir una funcin ecu(a,b,c) que determine las races de la ecuacin
ax2+bx+c=0.

1 2 3
. Define una funcin que
7. Define como variable global la matriz A=
4 5 6
calcule el incremento de todos los elementos de A en un nmero a elegir.
8. Construir una funcin tal que, dados dos vectores u, v, devuelva un vector con
los elementos de u excepto el primero, y los elementos de v excepto el ltimo.

41

Tema 5: Introduccin a los grficos en 2


dimensiones
1. Representacin grfica en Matlab
Matlab ofrece gran nmero de posibilidades a la hora de realizar
representaciones grficas. Dibuja curvas planas y superficies. Permite agrupar y
superponer representaciones. Todo ello con variaciones de estilo y de coordenadas.
Permite a su vez realizar grficos de tipo estadstico: de barra, histogramas, etc.
Por las caractersticas propias del programa, los grficos, en concreto los 2D,
estn orientados a la representacin grfica de vectores. Se utiliza una ventana
especial para la creacin de los grficos: la ventana grfica o de dibujo y, dichos
grficos se guardan en ficheros de extensin .fig. Ciertos comandos ejecutados sobre
la lnea de comandos son los que abren esta ventana, otros dibujan sobre la ventana
activa, bien sustituyendo lo que haba en ella, bien aadiendo nuevos elementos
grficos a los que haba. Los iremos estudiando con ms detalle

2. Funciones bsicas para las grficas 2D


El comando bsico para la representacin de grficos 2D es el comando plot.
Su sintaxis puede ser:
plot(x,y): dibuja el conjunto de puntos (x,y) donde las abscisas de los puntos
se encuentran en el vector x y las ordenadas en el y.

Para representar una funcin f(x) es necesario conocer los valores de puntos
de la forma (x,f(x)). Para ello puede seguirse alguno de estos caminos:
-

Definir un vector x con el rango de variacin donde se desea pintar la


funcin. Para ello puede ser muy til el comando linspace(xmin,xmax,n).
Crear el vector y evaluando f en x. Por ejemplo:

42

>> x=linspace(0,10,100);
>> y=sin(x);
>> plot(x,y)
Por defecto, MATLAB dibuja uniendo los puntos con lnea continua de color azul
y un grosor determinado, opciones todas que se podrn alterar como veremos.
-

Tambin es posible dibujar una funcin con el comando fplot cuya sintaxis
es la siguiente: fplot(f(x),[xmin,xmax]). As, este comando admite como
argumento un nombre de funcin o de un fichero .m en el que est definida
la funcin a representar. Por ejemplo:
>> fplot(sin(x)',[-3*pi,3*pi,-1,1])

En general, si no se cierra la ventana de dibujo generada al evaluar un


comando como los anteriotes, si se vuelve a ejecutar uno de ellos, se dibuja sobre
dicha ventana perdindose el primer dibujo. Si se desea representar varias funciones a
la vez las opciones son:
-

plot(x,y,x,z) donde x el vector de las abscisas, comn para las dos


representaciones, y es el de las ordenadas de la primera representacin y z
las de la segunda.

fplot([f1(x),f2(x),...],[xmin,xmax]) donde f1, f2, son las funciones a


representar en el intervalo de variacin marcado por xmin y xmax.

Mediante el comando: hold on, hold off. Todos los grficos que se ordene
dibujar entre los comandos hold on y hold off se representan en la misma
figura. Si hay una figura abierta se dibujan en sta.
Ejemplo:
>> hold on
>> x=[-3*pi:1:3*pi];
>> plot(x,sin(x))
>> plot(x,tan(x),'r')
>> hold off

El comando subplot. Una ventana grfica se puede dividir en m particiones


horizontales y n verticales para representar mxn figuras. Cada una de las
particiones tendr sus ejes aunque las propiedades sern comunes a todas
ellas. La sintaxis es: subplot(m,n,i), donde m y n son el nmero de
subdivisiones e i la subdivisin activa. Por ejemplo:
>> x=0:0.1:2*pi;
>> y=sin(x);z=cos(x);t=exp(-x);v=x^2;
>> subplot(2,2,1), plot(x,y)

43

>> subplot(2,2,2), plot(x,z)


>> subplot(2,2,3), plot(x,t)
>> subplot(2,2,4), plot(x,v)
La ventana grfica sera la de la figura 18

Figura 18

2.1. Opciones de dibujo


Hemos visto que el comando plot(x,y) dibuja los grficos con unas
caractersticas predefinidas en el programa, es posible alterarlas a partir de plot(x,y,s)
donde s se compone de dos dgitos entre comillas. Uno fija el color de la lnea y otro el
carcter a usar en el grfico. Por ejemplo:
>> plot(x,y,'-*g')
dibuja los puntos unidos con una lnea continua, marcando los puntos con *, y en
verde.
Otros tipos de marcadores son:

. *

x o

(marcan los puntos en el

grfico).
Otros tipos de lnea: los puntos se unen con una lnea con las siguientes
posibilidades de apariencia:
-

(lnea continua)

- - (lnea formada por trazos discontinuos)


-. (lnea formada por puntos y trazos)

44

(lnea formada por puntos)

Los colores vienen dados por: y: amarillo, g: verde, m: magenta, b: azul, c:


can, w: blanco, r: rojo, k: negro.

Se puede modificar el grosor de lnea incluyendo la cadena: Linewidth,


nmero_indicativo_del_grosor. Por ejemplo: plot(x,y,'linewidth',2)

En general, se puede obtener una excelente descripcin del comando plot y


otros relacionados con el mediante la ejecucin de help plot:

PLOT Linear plot.


PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
then the vector is plotted versus the rows or columns of the matrix,
whichever line up. If X is a scalar and Y is a vector, length(Y)
disconnected points are plotted.
PLOT(Y) plots the columns of Y versus their index.
If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
In all other uses of PLOT, the imaginary part is ignored.
Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:
b

blue

green

red

cyan

point
o

solid

circle

dotted

x-mark

-.

dashdot

plus

--

dashed

magenta

star

yellow

square

black

diamond

triangle (down)

triangle (up)

<

triangle (left)

>

triangle (right)

pentagram

hexagram

For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus


at each data point; PLOT(X,Y,'bd') plots blue diamond at each data

45

point but does not draw any line.


PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
the (X,Y,S) triples, where the X's and Y's are vectors or matrices
and the S's are strings.
For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
solid yellow line interpolating green circles at the data points.
The PLOT command, if no color is specified, makes automatic use of
the colors specified by the axes ColorOrder property. The default
ColorOrder is listed in the table above for color systems where the
default is blue for one line, and for multiple lines, to cycle
through the first six colors in the table. For monochrome systems,
PLOT cycles over the axes LineStyleOrder property.
PLOT returns a column vector of handles to LINE objects, one
handle per line.
The X,Y pairs, or X,Y,S triples, can be followed by
parameter/value pairs to specify additional properties
of the lines.
See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID, CLF, CLC, TITLE,
XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT, STEM.

- Ttulos y etiquetas
Matlab permite manejar correctamente anotaciones sobre los grficos y los ejes
mediante la colocacin adecuada de ttulos y etiquetas, rejillas o leyendas. Los
comandos ms usados son:
title (texto): aade el texto entre comillas como ttulo del grfico.
xlabel(texto): aade el texto entre comillas como texto al lado del eje x.
ylabel(texto): aade el texto entre comillas como texto al lado del eje y.
legend(texto): sita la leyenda especificada en el texto.
grid: crea rejillas en los ejes
gtext(texto): permite situar el texto especificado en el punto que sealemos
con el ratn dentro de la ventana de trabajo.

- Control de ejes
Tambin aqu Matlab tiene sus opciones por defecto. En muchas ocasiones es
interesante alterarlas. Ya hemos visto que la variacin en el eje x se elige al fijar las
coordenadas x de los puntos. Por defecto el programa ajusta la escala de cada uno de
los ejes de modo que vare entre un mximo y el mnimo valor a representar (es el

46

modo auto). Para definir otros se utiliza el comando axis cuya sintaxis es: axis
([xmin,xmax,ymin,ymax]). axis(auto) devuelve la escala al valor por defecto.
Destacar que:
axis off elimina los ejes del dibujo y axis on los incorpora.

- Entrada de puntos con el ratn


Matlab permite introducir las coordenadas de los puntos sobre los que se
encuentra el cursor, al pinchar o al pulsar alguna tecla. El comando que lo realiza es
ginput. Algunas formas de utilizarlo son:

[x,y]=ginput: lee los puntos cada vez que se pincha o se pulsa alguna tecla.
Finaliza al pulsar intro.
[x,y]=ginput(n): lee las coordenadas de n puntos

3. La ventana grfica de Matlab.


La mayora de las opciones de cambio en una grfica presentadas con
anterioridad, pueden realizarse desde la pantalla de dibujo. Posibilidades que se han
mejorado en las versiones 6 del programa.
Resulta muy til inspeccionar cada uno de los mens de esta ventana ejecutar
las opciones directamente en ella. As, por ejemplo, el men insert permite
directamente insertar en la figura etiquetas en los ejes, leyendas o ttulo entre otras
cosas (figura 19).
En el men edit aparecen entre otros los comandos Figure Properties, axes
Properties y Current Object Properties, con ellos se abre paso a los editores
correspondientes donde se nos da la posibilidad de cambiar las opciones de dibujo
(figura 20).

47

Figura 19

Figura 20

Veamos el editor de ejes, figura 21:

48

Figura 21

Las pestaas x,y,z nos permiten actuar sobre cada uno de los ejes, poniendo
etiqutas (Label), cambiando el color (Color), cambiando los lmites (Limit),...

Desde la pestaa superior podemos acceder a otros editores como los de linea
(line). Desde los que se pueden cambiar las opciones correspondientes (figura 22).

Figura 22

49

A los mismos editores se llega desde edidt, Current Object Properties, si


tenemos seleccionado, pinchando primeramente el botn de la flecha de la ventana de
dibujo, el elemento que se quiere ajustar, bien los ejes o bien una lnea de las que
componen la grfica.

50

Prctica 5: Grficos 2D
1. Representar grficamente los puntos p1=(1,1), p2=(3,2), p3=(0,4), p4=(-3,6)
primeramente conectados y luego aislados.
2. Representar grficamente las siguientes funciones en ventanas diferentes,
f(x)=sen(x), g(x)=x2+3x en el intervalo [0,2].
3. Representar la grfica de la funcin f(x)=xsen(x) en el intervalo [0,2], con
rejilla.
4. Representar f(x)=sen(x)cos(x) en [0,2], con etiquetas en los ejes, ttulo y en
color rojo.
5. Dibujar el polinomio x2+5x-3 con 200 puntos, en color rojo, con trazo
discontinuo, con ttulo y con rejilla.
6. Representar en [0,6] y en la misma grfica las funciones:
a. f(x)=3xex en azul.
b. g(x)=sen(x+3) en rojo y con trazo discontinuo.
Poner leyendas.
7. Representar la funcin f(x)=3sen(x)-sen(3x) en el intervalo [0,2] con 200
puntos, con ttulo y etiquetas en los ejes.
a. Eliminar los ejes con sus etiquetas y volver a activarlos.
b. Hacer que el eje de abscisas sea el intervalo [0,3] y el rango de las
imgenes el intervalo [0,1].
c. Volver a dibujarla como estaba.
d. Representarla con la misma escala en ambos ejes.
8. Representar en la misma grfica pero en distintas ventanas las siguientes
funciones: x, x2, x3, x4, x5, x6. Las pares en color rojo y con rejilla, las impares en
azul y sin rejilla.
9. Resolver grficamente la ecuacin

x sen( x)
= 0.02 en el intervalo
2


0, 4 . Para

ello se aconseja seguir los siguientes pasos:


a. Dibujar la grfica de la funcin f(x)=

x sen( x)
en el intervalo dado.
2

b. Dibujar la recta y=0.02 en color rojo en el mismo intervalo y en la misma


ventana grfica.
c. Poner nombre (x0,y0) al punto de corte con el comando gtext.
d. Determinar grficamente el punto de corte (x0,y0) de ambas curvas.

51

e. Poner leyendas, etiquetas a los ejes y un ttulo que indique cul es el


punto de corte solucin de la ecuacin.
10. Representar la funcin xsen

1
en el intervalo [-1,1] y utilizar el zoom para
x

observar lo que sucede en las cercanas de (0,0).

x = sen(3t )
11. Representar la curva de ecuaciones paramtricas
y = sen(2t )

52

Tema 6: Introduccin a los grficos en 3


dimensiones
1. Introduccin
Matlab est preparado para realizar diversos tipos de grficos en tres
dimensiones. Ya se ha comentado que por las caractersticas del programa, estos
grficos al igual que los de dos dimensiones, estn orientados a la representacin de
vectores. Esto puede causar un poco de dificultad al principio y habr que preparar los
elementos a representar previamente.
Se pueden realizar grficos 3D tanto de lneas como de mallas o superficies.
Para ello los pasos a seguir sern siempre los mismos:
-

Preparar los datos.

Usar la funcin grfica 3D adecuada.

Retocar las propiedades del dibujo a nuestro gusto.

Destacar que la gran mayora de los elementos estudiados para grficos 2D


tienen su correspondiente aplicacin para 3D.

2. Funciones bsicas para las grficas 3D


La primera frmula de grficos en tres dimensiones es la funcin plot3 que
resulta anlogo al comando plot en grficos bidimensionales. Dibuja puntos cuyas
coordenadas estn contenidas en tres vectores x,y,z. Su sintaxis puede ser:
plot3(x,y,z). Como iremos viendo, a este comando de le pueden aadir opciones de
dibujo en la misma lnea que se present para el comando plot en el caso 2D.
Ejemplo:
>> x=[1,2,3]; y=[-1,4,7]; z=[0,-3,5];
>> plot3(x,y,z,*)

53

Veremos con detalle como se pueden dibujar funciones de dos variables,


z=f(x,y). Lo primero que debemos pesar es que por las caractersticas propias de
Matlab, lo primero es crear el conjunto de puntos (x,y,z) de la grfica de la funcin, es
decir, con z=f(x,y), que se desean representar. Para ello es necesario considerar los
vectores x e y que contienen las coordenadas en una y otra direccin de la retcula
(grid) sobre la que se dibujar la funcin. A partir de ellos se genera la malla donde
estarn todos los valores (x,y) sobre los que se evaluar a funcin para generar los
puntos tridimensionales a representar. As, creamos dos matrices X e Y a partir del
comando meshgrid(x,y) que representan las coordenadas x e y de los puntos a
representar:
>>x=[1,2,3,4]; y=[-1,0,1,2];
>> [X,Y]=meshgrid(x,y)
X=
1

-1

-1

-1

-1

Y=

Como vemos en este caso hemos generado una malla formada por 16 puntos
de

coordenadas

(1,-1),(1,0),(1,1),(1,2),(2,-1),...(2,2),.......,(4,-1),...(4,2).

Es

bueno

sealar que por el proceso indicado debe tenerse cuidado con las longitudes de los
vectores x e y ya que al generar la malla, el nmero de puntos con los que se va a
trabajar aumenta grandemente.
Slo queda evaluar la funcin f sobre esta malla, es decir Z=f(X,Y) y
representar los valores. Para ello se utilizan los comandos:
-

Mesh(Z) que dibuja en perspectiva la funcin en base a una retcula de


lneas de colores con eliminacin de lneas ocultas (figura 23).

Surf(Z) dibuja la superficie faceteada tambin con eliminacin de lneas


ocultas (figura 24).

Destacar que existen otras formas ms generales de estas funciones para la


representacin paramtrica: mesh(x,y,z) dibuja una superficie de puntos (X(i,j),Y(i,j),
Z(i,j)).

54

Figura 23

Figura 24

55

2.1. Opciones de dibujo


Hemos visto que las funciones anteriores dibujan los grficos con unas ciertas
caractersticas. De forma muy parecida a lo explicado para el caso bidimensional,
podremos alterar estas caractersticas a nuestro gusto. Veremos como hacer algunos
cambios desde la lnea de comandos pero resulta ms cmodo trabajar en la propia
ventana de dibujo. Como la mayora de las opciones de cambio en una grfica,
pueden realizarse desde la pantalla de dibujo, vuelve a

resultar de gran utilidad

inspeccionar cada uno de los mens de esta ventana y ejecutar las opciones
directamente en ella.

- Ejes, puntos de vista, lneas ocultas


La localizacin del punto de vista o la direccin de observacin de la figura
representada puede alterarse mediante el comando view de sintaxis: view(azimut,
elevacin). Donde azimut es el ngulo de rotacin en un plano horizontal medido
sobre el eje z a partir de un eje x en sentido antihorario, y elevacin es el ngulo de
elevacin respecto al plano xy. Se miden en grados.
De la misma forma se altera desde el men view, camera/toolbar.
Para el control de los ejes se utiliza el comando axis que ya se present en 2D,
en su versin tridimensional. Tambin se accede al tratamiento de los ejes desde el
mun edit/axes properties.

- El color
En cuanto a la utilizacin del color, un mapa de colores en Matlab se defina
mediante una matriz de tres columnas con valores entre 0 y 1, que representan la
intensidad de rojo, verde o azul (R,G,B). El comando colormap acta sobre la figura
activa cambiando sus colores. No obstante, existen mapas de colores ya predefinidos
en el programa. Pueden elegirse por ejemplo, desde el la pestaa colormap en el
editor de propiedades de la superficie.
3. Lneas de contorno
Para los grficos en tres dimensiones es de gran utilidad la representacin de
curvas de contorno o de nivel. Algo que puede verse como otra forma de
representacin, figura 25. Para ello Matlab cuenta con el comando contour. Puede
usarse con diferentes sintaxis, por ejemplo:
-

contour(Z,n), n representa el nmero de lneas de nivel. Si no se pone se


utiliza un nmero por defecto.

56

contour(Z,v), donde v es un vector con los valores de las curvas de nivel a


dibujar.

Figura 25

57

Prctica 6: Grficos 3D
1. Representar grficamente los puntos siguientes: p1=(1,1,1), p2=(3,2.0),
p3=(0,4,2), p4=(-3,6,8) primeramente conectados y luego aislados.
2. Representar las funciones f(x,y)=sen(x)cos(y) en el intervalo [0,2]x[0,2].
Poner ttulo al dibujo y etiquetas en los ejes.
a. Realizarlo con el comando mesh.
b. Representarlo con el comando surf.
c. Realizarlo de forma seguida primero con mesh y luego con surf para
visualizar las diferencias. Utilizar el comando pause.
3. Representar la grfica anterior junto con la de g(x,y)=ycos(x) en el intervalo
[0,2]x[0,2] pero en distintas ventanas.
4. Representar en la misma figura y sobre los mismos ejes la funcin

x 2 + y 2 enfocada desde distintos puntos de vista.


5. Representar grficamente la funcin f(x,y)=x2-y2 en el cuadrado [-2,2]x[-2,2].
a. Representar en la misma ventana el plano tangente a la superficie en el
origen de coordenadas.
b. Visualizarla desde distintos puntos de vista.
c. Cambiar el color.
d. Utilizar el zoom para visualizar ciertas zonas.
6. Representar f(x,y)=sen(x+y2) en [-2,2]x[-2,2]. Poner rejilla y volverla a quitar.
a. Representar algunas curvas de nivel.
b. Representar las curvas a alturas 0.2,-0.1,0,0.1,0.2,0.3.
c. Representar en la misma ventana grfica la superficie y las curvas de
nivel
7. Dibujar una esfera de radio 1 con 30 puntos. Usar el comando sphere(n).
8. Dibujar un cuadrado de vrtices (1,0),(2,1),(1,2),(0,1) con el interior del mismo
en verde. En el mismo dibujo representar un segmento de extremos (2,1) y
(0,1) en color azul. Comando fill(x,y,color).
9. Dibujar el tringulo de vrtices (0,0,0), (1,2,3), (3,5,4) con el interior en rojo.
Comando fill3

x(t ) = 1 + cos(t )

10. Representar la hlice y (t ) = 1 + 2sen(t ) t[0,4] y modificar algunas de sus

z (t ) = 4t

caractersticas grficas, grosor, etiquetas, etc.

58

Tema 7: Programacin con Matlab


1. Introduccin
Matlab puede utilizarse como un lenguaje de programacin que incluye todos
los elementos necesarios. Aade la gran ventaja de poder incorporar a los programas
propios del usuario todas las aplicaciones que ya tiene implementadas, lo cual facilita y
simplifica en muchos casos la programacin. Tambin ser de gran utilidad tener en
cuenta la estructura vectorial y matricial del programa.
Como ya hemos adelantado, los programas en Matlab suelen escribirse en los
ficheros .m (M-ficheros). Lo normal es que sea en ficheros Scrips que resultan los ms
sencillos. A veces, no tienen argumentos de entrada ni salida y estn formados por un
conjunto de instrucciones que se ejecutan secuencialmente. Por ejemplo, el fichero de
la figura 26 representa una curva cuando se escribe su nombre, en este caso pinta,
en la lnea de comandos y se pulsa intro.

Figura 26

59

Se puede decir que este ya es un programa creado en Matlab.

La estructura general de un programa MATLAB es la siguiente:


1) Comentarios: inicialmente, pueden aparecer lneas comentadas en las que
se da un ttulo al programa y se realiza una breve descripcin del mismo. Esta
parte es opcional, pero es til introducirla ya que se nos permite acceder
directamente desde la ventana de comandos a la informacin comentada
mediante la utilizacin del comando help, en la forma:
>> help nombre del programa
2) Entrada de datos si se requiere: los datos necesarios para la resolucin del
problema deben suministrarse al programa mediante la lectura de sus valores
por teclado o desde un fichero de datos.
3) Algoritmo: desarrollo de un procedimiento que permite obtener la solucin
del problema en funcin de los datos de entrada.
4) Salida de datos: los datos obtenidos como solucin del algoritmo se deben
ofrecer al usuario mediante escritura en pantalla o en un fichero de datos.

2. Entrada y salida de datos


Existe un comando para introducir informacin en un programa cuando
estamos en modo de ejecucin. Este comando es: v=input(Cadena de Caracteres)
input realiza dos tareas:
1) Imprime en pantalla la cadena de caracteres que lleva como argumento.
2) Los datos que el usuario teclea en respuesta al letrero, los introduce en la
variable v.

Para que un programa en modo de ejecucin pueda escribir letreros, avisos,


etc. por pantalla, se utiliza el comando: disp(Cadena de Caracteres) que escribe la
cadena de caracteres que tiene como argumento en pantalla.
Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra
en pantalla el valor de la variable v.
Para escritura de texto y/o datos en pantalla, se puede utilizar la funcin:
sprintf(formato, variables).
Ejemplos:
>> n=input(teclea el nmero de elementos)

60

>>disp(este valor no es adecuado)

3. Operadores
Ya hemos estudiado operadores de tipo aritmtico. En este momento puede
ser de utilidad conocer otros tipos de operadores:

Operadores relacionales:
<

Menor

<=

Menor o igual

>=

Mayor o igual

>

Mayor

==

Igualdad

~=

Desigualdad

find(A) Devuelve los ndices de los elementos no nulos


find(A condicin) Devuelve los ndices de los elementos de A que cumplen la
condicin

Operadores lgicos
~A

Negacin lgica

A&B

Conjuncin lgica (and)

A|B

Disyuncin lgica (or)

xor(A,B)

or exclusivo, vale 1 si A o B, pero no ambos, valen 1

Todos estos operadores actan elemento a elemento en matrices y vectores.


Las dimensiones y nmero de elementos de las tablas deben coincidir.

Ejemplo:
>> A=1:9; P=(A>2)&(A<6)
P= 0 0 1 1 1 0 0 0 0
4. Sentencias de control
El uso de aplicaciones recursivas y condicionales es muy habitual en
matemticas. Para ello si utilizan las bifurcaciones y los bucles.
Las bifurcaciones permiten realizar una u otra operacin segn se cumplan o
no ciertas condiciones. Los bucles repiten operaciones sobre datos distintos.
Algunas de las sentencias de las que dispone Matlab para este tipo de trabajos
son las siguientes:

61

Sentencia for:
Permite ejecutar de forma repetitiva un comando o grupo de comandos. La
forma general de un bucle for es:

for variable=expresin
comandos
end
Por ejemplo:
for i=1:3;v(i)=1;end;v
1

>>

As, un bucle for siempre empieza por la sentencia for y termina con la end. En
su interior incluye todo un conjunto de comandos que se separan por comas. En
algunos casos es bueno poner puntos y comas para evitar repeticiones en las salidas.
Por supuesto puede utilizarse en ficheros .m (figura 27).

Figura 27

Sentencia if:

62

Mediante esta estructura se pueden ejecutar secuencias de comandos si se


cumplen determinadas condiciones. Su sintaxis es:
If condicin
comandos
end

De forma ms general:
If condicin
comandos 1
else
comandos 2
end
que ejecuta comandos 1 si la condicin 1 es cierta y comandos 2 si es falsa.

Como en el caso de for, se pueden anidar sentencias if:


If condicin 1
comandos 1
elseif condicin 2
comandos 2
elseif condicin 3
comandos 3
...
else
end
Mediante el siguiente ejemplo se imprime en pantalla una frase, de tres posibles,
segn sea el valor de la variable n:
N=input(introduce un nmero natural)
If n=0,
disp(n es cero)
elseif rem(n,2)==0
disp(n es par)
else
disp (n es impar)
end

Sentencia while:

63

Tambin dispone de la sentencia haz mientras que ejecuta un bucle mientras


una condicin sea cierta. Su sintaxis es:
while condicin
comandos
end
en el interior (comandos) se incluyen todo tipo de comandos que se separan por
comas y que se ejecutan mientras la condicin sea cierta.
Como ejemplo calcularemos el mayor nmero factorial que no esceda a 10100:
n=1;
while prod(1:n)<1.e100,
n=n+1;
end,
n

Este otro ejemplo tiene como salida el vector 1 2 3 4 5 6.


v=1:9;
i=1;
while v(i)<7
disp(v(i))
i=i+1;
end

Continue
Esta sentencia hace que se pase inmediatamente a la siguiente iteracin del
bucle for o while, saltndose todas las sentencias que existan entre el continue y el
final del bucle en esa iteracin.

Break
Hace que se termine la ejecucin de un bucle for o while.

Nota: existen otras sentencias que pueden ser de inters y que pueden consultarse
en: matlab\lang - Programming language constructs.

64

Prctica 7: Programacin con Matlab


1. Se pide:

x 2 1 si 2 x 2
a) Definir la funcin f ( x) = 1
x si x < 2 x > 2
b) Disear un programa que obtenga f(x) si x es un escalar, pero si es un intervalo
(vector de dos componentes) dibuje la funcin en ese intervalo; en caso
contrario debe aparecer un aviso en pantalla.

c) Realizar la llamada al programa para:


1: Evaluar la funcin en los valores 1 y 8.
2: Obtener la grfica de la funcin en el intervalo [-15,15].

d) Arreglar el apartado a) para que f se pueda aplicar sobre vectores y nos de las
salidas de la aplicacin de la funcin sobre cada componente.

2. Construir un programa que calcule los cubos de los nmeros naturales cuyo
cuadrado sea menor que un nmero m (que se pide al usuario) y los introduzca
en un vector v.

3. Construir una funcin r(a,b,c) que calcule las races de un ecuacin de 2 grado
ax2+bx+c y que indique:
a. La ecuacin no es de 2 grado si a=0.
b. Que existen 2 races reales distintas.
c. Que existe una raz real doble.
d. Que existen dos races complejas.

4. Construir un programa que nos de los n primeros nmeros de la sucesin


a(n)=n2-4n+3. Aadir una sentencia al programa que permita representar los
trminos en el plano.
5. Crear un programa que calcula la matriz A de elementos aij=i2+j.
6. Dado un plano ax+by+c=0, crear un programa que nos diga si un punto (x,y)
pertenece a dicho plano, est por encima o por debajo de l.

65

7. Crear un programa que detecte si en un determinado intervalo [a,b] existe una


raz de una funcin continua f(x).

8. En un comercio se venden cajas de tornillos. Su precio depende del nmero de


cajas comprados: hasta 100 cajas el precio de la caja es de 2 euros, desde 101
a 200 cajas el precio es 1,5 euros y, a partir de 201 cajas el precio es de 1
euro. Elaborar un programa que pregunte el nmero de cajas demandadas y
que indique el precio de la unidad y el coste total del pedido.

9. Realiza una tabla que incorpore el valor de los nmeros enteros menores que
20, sus inversos, sus cuadrados y sus races cuadradas. Hacerlo primeramente
con el comando while y luego con el comando for.

10. Programar el mtodo de la biseccin y el de Newton para aproximar races de


funciones.

66

Tema 8: Tratamiento de datos. Ficheros


1. Introduccin
En el tema anterior hemos visto una forma de entrar datos o imprimir resultados
a travs de funciones como input o disp. En este tema se estudiarn otras formas de
intercambiar datos entre el Matlab y diversos programas o aplicaciones.
Veremos que Matlab dispone de comandos de entrada y salida que actan
sobre ficheros y que permiten abrir y cerrar ficheros e importar y exportar datos.

2. Importar y exportar datos


Antes de estudiar opciones ms complejas, es interesante comentar que la
opcin de copiar y pegar (Copy/Paste) puede ser adecuada en muchos casos. Por
ejemplo, copiar elementos de Excel y depositarlos en Matlab entre corchetes funciona
con frecuencia.
Nota: Esta opcin puede generar problemas por ejemplo, segn se hayan introducido
los nmeros decimales.

2.1. Utilizando el Current Directory


Si tenemos un fichero .txt, .data,... y lo hemos situado en el directorio actual de
trabajo en Matlab, pinchando sobre l con el botn derecho tenemos la opcin Import
Data (figura 28). Se abre entonces un men donde se nos ofrecen posibilidades como
elegir entre varios separadores de columnas. Si todo est como queremos la pestaa
Next crea una variable con el nombre del fichero y el contenido del mismo que ya
puede ser usada en la sesin de trabajo (figura 29).
Esta opcin de Matlab nos permite trabajar de forma muy simple en caso de
ficheros de datos adecuados.

67

Figura 28

Figura 29

2.2. Comandos

Comandos fopen, fclose y fprintf


Estos comandos sirven para abrir y cerrar ficheros.

Para abrir un fichero, se utiliza el siguiente comando:


variable = fopen(fichero,permiso) donde:
-

variable es el nombre de la variable que guarda el identificador del fichero.

fichero especifica el nombre externo y la direccin del archivo.

permiso indica el modo de apertura del fichero:


r abre un fichero existente para lectura.

68

r+ abre un fichero existente para lectura y escritura.


w crea un fichero nuevo para escritura.
w+ crea un fichero nuevo para lectura y escritura.
Destacar que este comando lo que hace es poner en contacto el programa con
un fichero, no lo visualiza en pantalla. Para trabajar con ficheros lo primero ser abrirlo
y lo ltimo cerrarlo.

Para cerrar un fichero se utiliza la funcin: fclose(fid) que cierra el fichero de


identificador fid y devuelve 1 si el cierre es correcto y 0 si es incorrecto.

Para escribir en un fichero se utiliza el comando: fprintf(fid,format,A,.) que


escribe los elementos especificados en A (que en general es una matriz) en el fichero
de identificador fid (previamente abierto) con el formato especificado en format. As, la
funcin fprintf dirige su salida a un fichero indicado por el indicador.

Formato de datos:
%d Enteros.
%f Reales con punto fijo.
%e Reales con formato exponencial.
%g Utiliza uno de los formatos anteriores; el que d la mayor precisin en el
menor espacio.
Si se utiliza el comando fprintf(format,A,.) la escritura de datos se realiza en
la pantalla.

Ejemplo:
Creamos un fichero ASCII de nombre resultados que contiene los valores de la
funcin exponencial para valores de la variable entre 0 y 1 separados una dcima y lo
representamos en la pantalla.
>>x=0:.1:1
>>y=[x;exp(x)];
>>fid=fopen(resultado.txt,w);
>> fprintf(fid,%6.2f

%12.8f \n, y);

Este programa escribira en el fichero resultado.txt los siguientes valores:


0.00

1.00000000

0.10

1.10517092

0.20

1.22140276

0.30

1.34985881

69

........
1.00

2.71828183

Comando fscanf
La lectura de datos a partir de un fichero ASCII se realiza mediante los
comandos:
[A,cont]=fscanf(fid,formato) que lee datos con el formato especificado del
fichero abierto con el identificador fid, en un vector columna de nombre A. cont
es el nmero de datos ledos.
[A,cont]=fscanf(fid,formato,size) que lee datos con el formato especificado
del fichero abierto con el identificador fid y los escribe en la matriz A de tamao
size. cont es el nmero de datos ledos.

Ejemplo:
Se supone que en la carpeta de trabajo de MATLAB: work, se encuentra un archivo
de nombre datos.txt, cuyo contenido es:
12345
6 7 8 9 10
>>fid=fopen(datos.txt,r)
>>[A,cont]=fscanf(fid,%d)
La salida es el vector columna de contenido:1 2 3 4 5 6 7 8 9 10 y cont=10.

Otra posibilidad:
>>[A,cont]=fscanf(fid,%d,[2,5])
A=
1 3579
2 4 6 8 10
cont=10

Nota: Si realizamos estas operaciones seguidas tendremos problemas en la segunda


debido a que el fichero ha sido anteriormente ledo y es necesario rebobinarlo si se
quiere leer de nuevo. Entonces se utiliza
>>frewind(fid)

Otras posibilidades:
>>[A,cont]=fscanf(fid,%d,[3,3])
A=

70

147
258
369
cont=9

>>[A,cont]=fscanf(fid,%d,[4,4])
A=
159
2 6 10
370
480
cont=10

>>[A,cont]=fscanf(fid,%d,[4,inf])
>> %se est fijando como nmero de columnas de la matriz el valor mnimo que
permita la lectura de todos los datos del fichero. La salida es la misma que en el caso
anterior.

3. Trabajando con Excel


Matlab permite una muy buena conexin con este programa. Ya hemos
comentado que si los datos son adecuados, la opcin copiar en Excel y pegar en
Matlab entre corchetes y dando un nombre a la variable creada funciona directamente.
Esto nos obliga a que los nmeros estn definidos en Excel como en Matlab, por
ejemplo, los decimales con puntos y no con comas.
En general, por ejemplo si en el fichero existen cabeceras, lo apropiado es
importar el fichero segn lo explicado en el punto 2.1. Se crean entonces variables del
tipo: data (con los valores numricos), colheadest (con las cabeceras) y textdata (con
el texto de las cabeceras). No existe as ninguna incompatibilidad de formatos.

Si se dispone de la toolbox exlink la conexin con este programa es total y


directa:
Elegir en Excel del men Herramientas/Complementos/examinar: (Matlabtoolbox-excelink). Aparece entonces en excel una barra de herramientas con: put
matriz, get matriz y evaluate.
-

Excel-Matlab: Se crean unos valores en Excel y se selecciona put matriz.


Se abre Matlab y pregunta por el nombre para esa matriz. Se crea as una
nueva variable en el Workspace sin ningn problema de compatibilidad.

71

Matlab.Excel: Se utiliza get matriz. Esto abre el Workspace de Matlab y


desde all se exporta la matriz.

72

Prctica 8: Tratamiento de datos. Ficheros


1. Crear un fichero de texto con el block de notas con los datos:
1,2,3,4,5,6,7,8,9,10. Importarlo desde Matlab y crear un vector con su
contenido.
2. Sea el fichero datos.txt que contiene la siguiente informacin:

75219345784
Almacenar estos datos en una matriz A de 4 filas y 3 columnas.
3. Crear un fichero de Excel con las cantidades compradas de varios productos y
su importe por unidad. Cargarlo en Matlab y calcular all el coste total de la
compra.

73

Tema 9: Otros temas de aplicacin


1. Introduccin
Existen muchos elementos interesantes y aplicaciones del Matlab que no se
han comentado a lo largo de los temas. Se invita al lector a que investigue sobre ellos
segn las lneas que sean ms afines a su entorno de trabajo o estudio. No obstante,
se quiere terminar este texto con un captulo dedicado a introducir una variedad de
conceptos ms o menos usuales que no se han incluido anteriormente.

2. Polinomios
El programa dispone de comandos especficos para realizar las operaciones
ms comunes con polinomios, tal es el caso de bsqueda de races, evaluacin en
determinados valores, diferenciacin, interpolacin y ajuste.
Destacar que los polinomios en Matlab se introducen a partir de vectores cuyos
elementos son los coeficientes del mismo. Si alguno no aparece se introduce como 0.
As, x3+3x2-5 ser [1,3,0,-5].
Los comandos son:
-

polyval(u,x), evala el polinomio de coeficientes incluidos en el vector u en


el valor indicado en x.

conv(u,v), da los coeficientes del polinomio resultado de multiplicar los


polinomios de coeficientes incluidos en los vectores u y v.

[p,q]=deconv(u,v), devuelve los polinomios cociente y resto de la divisin


entre los polinomios u y v.

roots(u), calcula las races del polinomio u

polyder(u), nos da el polinomio resultado de derivar u.

polyfit(x,y,n), polinomio de grado n que ajusta los puntos (x,y) en el sentido


mnimos cuadrados.

74

poly(v), crea un polinomio cuyas races son las indicadas en el vector v.

3. Ajuste de datos. Interpolacin


Adems de la bsqueda de un polinomio interpolador, Matlab permite la
interpolacin a travs de un gran nmero de tcnicas. Destacaremos algunos de los
comandos que realizan este tipo de aplicaciones:
-

yi=interp1(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el


conjunto total de puntos hallados por interpolacin unidimensional del
conjunto de puntos (x,y).

yi=interp1(x,y,xi,mtodo), realiza interpolacin mediante el mtodo elegido


(nearlest, lineal, cubic, v5cubic, spline o pchip).

zi=interp2(x,y,z,xi,yi), da como resultado un vector zi tal que (xi,yi,zi) es el


conjunto total de puntos hallados por interpolacin bidimensional del
conjunto de puntos (x,y,z).

yi=spline(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el


conjunto total de puntos hallados por interpolacin cbica spline del
conjunto de puntos (x,y).

4. Matrices dispersas
Existen trabajos, especialmente en ingeniera, donde es necesario utilizar
matrices de gran tamao pero con un nmero importante de ceros en su interior
(matrices dispersas). Operar con este tipo de matrices a travs de mtodos
convencionales puede implicar tiempos muy grandes para el clculo. Matlab dispone
de funciones para trabajar con estas matrices dispersas que ahorra tiempos de
ejecucin.
El programa almacena estas matrices dispersas guardando en memoria
solamente los elementos no nulos junto con la posicin que ocupan en la matriz. As,
utiliza tres elementos, los valores de las filas de elementos no nulos, los valores de las
columnas de estos elementos y el valor que tienen.

1
0
Ejemplo: La matriz A =
0

0 0 0
2 3 0
se introducira como:
0 0 9

0 0 0

>> A=sparse([1,2,2,3,4],[1,2,3,4,1],[1,2,-3,9,2])
A=
(1,1)

(4,1)

75

(2,2)

(2,3)

-3

(3,4)

9
Para esto puede ser de utilidad el comando find, [i,j,v]=find(A) tiene como salida

el vector de las filas y el de las columnas de los elementos no nulos de la matriz A as


como el valor de dichos elementos.
De igual forma, el programa permite convertir una matriz llena en dispersa a
travs de este comando:
>> B=[1 2 0 0 0 0;0,9,0,0,8,0;0,0,0,-2,0,1]
B=
1

-2

>> S=sparse(B)
S=
(1,1)

(1,2)

(2,2)

(3,4)

-2

(2,5)

(3,6)

El comando full realiza la operacin contraria, el llenado de la matriz dispersa


>>full(S)
ans =
1

-2

En el men de ayuda matlab\sparfun - Sparse matrices se encuentran los


comandos para trabajar con este tipo de matrices. El criterio general para trabajar con
matrices dispersas en Matlab es que casi todas las operaciones matriciales estndar
funcionan sobre ellas al igual que lo hacen sobre las llenas.

5. lgebra lineal
Se destacan algunos temas relacionados con lgebra que pueden ser de
inters y que se realizan con el programa a travs de comandos especficos.

76

Valores propios:
El trabajo con valores y vectores propios es esencial en numerosas disciplinas.
Matlab permite trabajar con esta materia con comandos entre los que destacamos:

eig(A): Halla los autovalores de la matriz cuadrada A.


[P,D]=eig(A): Determina la matriz diagonal D de los autovalores de A y la
matriz P de columnas los autovectores correspondientes de forma que AP=PD.
Jordan(A): Halla la matriz cannica de Jordan de la matriz A.
[P,J]= Jordan(A): Halla la matriz cannica de Jordan de la matriz A y la matriz
de paso P de forma que P-1AP=J.
poly(A): Devuelve el polinomio caracterstico de la matriz A

Descomposicin de matrices:
Matlab trabaja con mtodos de descomposicin matricial como el LU,
Cholesky, qr,...

[L,U]=lu(A): Descompone la matriz A en el producto A=LU, siendo L una matriz


triangular inferior y U una superior.
[L,U,P]=lu(A): Da una matriz triangular inferior L, una superior U y una de
permutacin P de forma que PA=LU.
R=chol(A): Devuelve la matriz triangular superior R tal que RR=A siempre que
A sea definida positiva. En caso contrario devuelve un error.
[Q,R]=qr(A): Devuelve la matriz triangular superior R de igual dimensin que A
y la matriz ortogonal Q de forma que A=QR.(Puede aplicarse a matrices no
cuadradas)
[Q,R,E]=qr(A): devuelve la matriz triangular superior R de igual dimensin que
A, la matriz ortogonal Q y la matriz de permutaciones E de forma que de forma
que AE=QR.

Resolucin de ecuaciones:
Matlab permite resolver ecuaciones. Algunos de los comandos para realizarlo
son:
solve(ecuacin,x): Resuelve la ecuacin en la variable x.
solve(ecuacin1,eciacin2,...ecuacinn,x1,x2,...xn): Resuelve el sistema
de ecuacin en las variables x1,...xn.
x=fzero(funcin,x0): Halla un cero de la funcin ceca de x0.

77

[x,feval]=fzero(funcin,x0): Da tambin el valor de f en x.

Nota: Existen numerosos comandos que intentan resolver ecuaciones y sistemas


segn diversos mtodos numricos.

78

Prctica 9: Otros temas de aplicacin


1. Determinar las races del polinomio x3-6x2-72x-27, evaluarlo en alguna de ellas
para verificar que lo son.
2. Introducir el polinomio 2x3+4x2+1, se pide:
a. Calcular sus races.
b. Evaluarlo en x=3.
c. Crear un polinomio de races 1,2,5.
d. Multiplicar ambos polinomios.
3. Determinar el cociente y el resto de dividir los polinomios 5x5+3x3-x2+x-1 y 2x23x+2. Derivar el primero.
4. Construir una funcin que sume polinomios de cualquier grado y utilizarla para
sumar los polinomios del ejercicio anterior.
5. Determinar el polinomio interpolador de segundo grado que pasa por los
puntos (-1,4), (0,2), (1,6). Dibujar los puntos y el polinomio en el intervalo [-2,2].
6. Determinar el polinomio de ajuste de grado 1 en el sentido mnimos cuadrados
para los puntos (1,2), (-2,7), (-1,6). Dibuja los puntos y el polinomio en un
intervalo adecuado.
7. Los directores de una empresa se renen para analizar la situacin financiera
de la misma. Al estudiar la tabla:
AO

Beneficios

15

25

prevn que la curva que mejor representa los beneficios durante los prximos
aos es un polinomio de segundo grado. Determinar los beneficios que
esperan obtener el prximo ao.
8. Hallar y representar 30 puntos de interpolacin (x,y) de la funcin sen(x) para
valores de x igualmente espaciados entre 0 y 10.
9. Repetir el problema 8 para interpolacin spline y comparar las grficas
obtenidas.
10. Se considera un conjunto de temperaturas medidas sobre las cabezas de los
cilindros de un motor para utilizar en coches de carreras. Los tiempos de

79

funcionamiento del motor en segundos y las temperaturas en grados


Fahrenheit son las siguientes:
Tiempo

Temperatura 0

20

60

68

77

110

Realizar una regresin lineal que ajuste la temperatura en funcin del tiempo.
Repetirlo para regresiones polinmicas de grados 2, 3 y 4, representando los
resultados.
11. Definir las siguientes matrices de forma que slo se guarden los elementos no
nulos:

0 0
0
0
1 1 0
1 4 0

0
0 0
0
0 8
2 3
7 3
A = 0 0
0
0 0 B = 0 0 2 3
0

0 1 0
0 0
0 0 13 11 0

2
7 4
2
7 4
0 0
0 0
Se pide:
a. Recuperar la matriz A con todos sus elementos
b. Calcular A+B, A*B
c. Determinar los elementos no nulos de A*B junto con la posicin que
ocupan.

3
1 1

12. Dada la matriz A = 1 i 1 2i se pide:


i
1
i 2

a. Sus autovalores.
b. Sus autovectores.
c. Su polinomio caracterstico.

1 5 2

13. Sea la matriz A = 7 3 1 , se pide su descomposicin LU, QR y Cholesky


2 2 2

comprobando los resultados.


14. Resolver las ecuaciones:
a. xsen(x)=1/2
b. x4=1
x2

x
cos( )e 16 = y
12
15. Resolver el sistema de dos ecuaciones dado por:
3
5
+ y = sen( x 2 )
4

80

Tema 10: Simulink

Simulink es una parte grafica de MATLAB para modelacin y simulacin de sistemas. El


simulink los sistemas son dibujos en pantalla como diagrama de bloque. Muchos elementos
del diagrama de bloques son utilizados, tales como funciones de transferencia, sumadores,
uniones, etc .,As como entradas y salidas virtuales de aparatos tales como generadores
osciloscopios.
Simulink est integrado con MATLAB y los datos pueden ser fcilmen5e transferidos
entre programas. En estos tutoriales, aplicaremos Simulink para los ejemplos del tutorial
de MATLAB para modelar los sistemas, construir controladores y simular sistemas.
Simulink es soportado en ambientes como Unix , Macintosh y Windows; y est incluido
en la versin MATLAB para estudiantes para pcs.
La idea detrs de estos tutoriales es que puedas tener una vista de ellos en una ventana
mientras Simulink se corre en otra ventana. Los archivos de modelos de sistemas pueden
ser bajados de los tutoriales y abiertos en Simulink. No confundas las ventanas, conos y
mens de los tutoriales con tu ventana actual de Simulink. La mayora de las imgenes
en los tutoriales no suceden simplemente muestran lo que deberas ver en tu propia
ventana-. Todas las operaciones del Simulink deben ser hechas en la ventana del
Simulink.
Iniciando Simulink
Simulink se inicia desde la pantalla de comandos del MATLAB escribiendo el siguiente
comando:
simulink
Alternativamente, puedes presionar en nuevo botn de Simulink en la barra de comandos,
como se muestra a continuacin:

81

Cuando inicia, Simulink muestra dos ventanas. La primera es la ventana principal la


cual aparece como:

La segunda ventana es una ventana de modelado en blanco y sin ttulo. Esta es la ventana
en la cual un nuevo modelo puede ser dibujado.
Archivos de Modelos
En Simulink, un modelo es una coleccin de bloques que, en general, representa un
sistema. A parte de poder dibujar un nuevo proceso en una hoja en blanco, archivos
previamente guardados pueden ser cargados desde el men FILE o desde la hoja de
comandos del MATLAB. Como un ejemplo, abra el archivo simple.mdl en Simulink
escribiendo el siguiente comando en la hoja de comandos del MATLAB (alternativamente,
se puede cargar esta archivo usando la opcin Open en el men File en Simulink
tecleando Ctrl+O en Simulink.
simple
La siguiente ventana de modelos debe aparecer.

Un Nuevo modelo puede ser creado seleccionando New del men File en cualquier
ventana de Simulink (o tecleando Ctrl+N).
Elementos Bsicos
Hay dos clases de artculos especializados en Simulink: bloques y lneas. Los bloques son
82

usados para generar, modificar, combinar, sacar y desplegar seales. Las lneas son
usadas para transferir seales de un bloque a otro.
Bloques
Hay varias clases generales de bloques:
Fuentes: Usadas para generar varias seales.
Sinks: Usados para sacar o desplegar seales.
Discreto: Lineal, elementos de sistemas de tiempo discreto (funciones de
transferencia, modelos de estado espacio, etc.)
Linear: Lineal, continuous-time system elements and connections (summing
junctions, gains, etc.)
No lineal: Operadores no lineales (funciones arbitrarias, saturacin, retraso, etc.)
Conexiones: Multiplexor, Demultiplexor, Sistemas Macros, etc.
Los bloques tienen de cero a muchas terminales de entrada y de cero a muchas terminales de
salida Los trminos de la entrada sin usar son indicados por un tringulo abierto pequeo.
Los trminos de salida sin usar son indicados por un punto triangular pequeo. El bloque
mostrado debajo tiene un trmino de la entrada sin usar en la izquierda y un trmino de
salida sin usar en el derecho.

Lneas
Las lneas transmiten seales en la direccin indicada por la flecha. Las lneas siempre deben
transmitir las seales de la terminal de salida de un bloque a la terminal de entrada de otro
bloque. En la excepcin a esto es una lnea puede separarse a otra lnea, mandando la
seala cada uno de dos bloques destino, como se muestra (pulse el botn la figura
para transmitir el archivo del ejemplo llamado split.mdl).

Las lneas nunca pueden inyectar seales en otra lnea; las lneas deben combinarse
83

a travs del uso de un bloque como una unin sumando.


Una seal puede ser una seal escalar o una seal vectorial. Para EntradaSimple,
Sistemas del Salida-Simple, generalmente se usan seales escalares. Para el Multientrada, sistemas de Multi-Salida, se usan a menudo las seales vectoriales, consistiendo
en dos o ms seales escalares Las lneas para transmitir seales escalares y
vectoriales son idnticas. El tipo de seal llevado por una lnea es determinado por los
bloques en cualquier extremo de la lnea.
Ejemplo Simple

El modelo 'Simple' (de la seccin de archivos de modelos) consiste en tres bloques:


Escaln, Funcin de Transferencia, y Scope. El Escaln es un bloque de fuente del que
una seal de entrada escaln es originada. Este signo es transferido a travs de la lnea
en la direccin indicada por la flecha al bloque de la Funcin de Transferencia lineal. La
Funcin de Transferencia modifica la seal de entrada y arroja una nueva seal en una
lnea al Scope. El Scope es un bloque usado para desplegar una seal muy similar a un
osciloscopio.
Hay muchos ms tipos de bloques disponible en Simulink algunos de los cuales se
discutir despus. Ahora mismo, nosotros examinaremos simplemente los tres
que nosotros hemos usado en el modelo 'Simple'.
Modificando Bloques
Un bloque puede modificarse haciendo doble click en l. Por ejemplo, si usted pulsa el
bloque de "Funcin de Transferencia" en el modelo Simple, usted ver la caja del
dilogo siguiente.

Esta caja del dilogo contiene campos para el numerador y el denominador del bloque de la
84

funcin de transferencia. Entrando un vector que contiene los coeficientes del numerador
deseado o polinomio del denominador, la funcin de transferencia puede ser
introducida. Por ejemplo, para cambiar el denominador a s^2+2s+1, introduzca
lo siguiente en el campo del denominador:
[1 2 1]
y cierre la ventana, la ventana del ejemplo cambiar a lo siguiente,

el cual refleja el cambio en el denominador de la funcin de transferencia.


El bloque del Escaln tambin puede pulsarse, accesando a la caja del dilogo
siguiente.

Los parmetros predefinidos en este dilogo generan una funcin escaln que
ocurre al tiempo=1, de un nivel inicial de cero a un nivel de 1. (en otros
trminos, un escaln de magnitud 1 a t=1). Cada uno de estos parmetros
puede cambiarse. Cierre este dilogo antes de continuar.
El ms complicado de estos tres bloques es el bloque del Scope. El pulsando en el
bloque, esto desplega una pantalla de osciloscopio en blanco.

85

Cuando una simulacin ha realizado, la seal que alimenta el Scope se desplegar


en esta ventana. El funcionamiento detallado del Scope no se cubrir en esta gua
didctica. La nica funcin que nosotros usaremos son las autoescalas, que aparecen como
un par de binoculares en la parte superior de la ventana.
Corriendo Simulaciones
Para correr la simulacin, trabajaremos con el siguiente modelo:
simple2.mdl
Se debe ver la siguiente ventana con el modelo.
Antes de ejecutar una simulacin de este sistema, primero abra la ventana del Scope
pulsando el bloque del Scope. Despus, para empezar la simulacin, seleccione Start del
men de Simulacin (como es mostrado debajo) o presione Ctrl-T en la ventana del
ejemplo.

La simulacin correr muy rpido y la pantalla del Scope aparecer como sigue:

86

Note que la salida de la simulacin (mostrado en amarillo) est a un nivel muy bajo a los ejes
del scope. Para arreglar esto, presione el botn autoscale (los binoculares) que reescalar
los ejes como se muestra debajo.

Note que la respuesta del escaln no empieza hasta el t=1. Esto puede cambiarse
haciendo doble en el bloque del escaln. Ahora, cambiaremos los parmetros del sistema y
simularemos el sistema de nuevo. Pulse el bloque de "Funcin de Transferencia" en la
ventana y cambie el denominador a [1 20 400]
Re-ejecute la simulacin (presione Ctrl-T) y usted debe ver lo que aparece como una
lnea llana en la ventana del scope. Presione el botn de autoscale, y usted debe ver lo
siguiente en la ventana del scope.

Note que el botn del autoscale slo cambia el eje vertical. Desde que la nueva
funcin del traslado tiene una contestacin muy rpida, el scope comprimi una parte
muy estrecha de la ventana. ste realmente no es un problema con el scope, pero con
87

la propia simulacin. Simulink simul el sistema durante un diez segundos completos


aunque el sistema haba alcanzado el estado firme poco despus un segundo.
Para corregir esto, usted necesita cambiar los parmetros de la propia simulacin.
En la ventana del ejemplo, seleccione Parameters del men Simulation. Usted ver la
caja del dilogo siguiente.

Hay muchas opciones de parmetros de simulacin; nosotros slo tendremos relacin con
los tiempos de inicio y paro, que le dicen a Simulink de qu periodo de tiempo realizar la
simulacin. Cambia el tiempo de inicio de 0.0 a 0.8 (desde que el escaln no ocurre
hasta t=1.0). Cambie el tiempo paro de 10.0 a 2.0 que slo deben ser poco despus el
sistema se estabiliza. Cierre la caja del dilogo y vuelva a correr la simulacin. Despus
de presionar el botn autoscale, la ventana del scope debe proporcionar un mucho
mejor despliegue de la respuesta del escaln como es mostrado debajo

.
88

Construyendo Sistemas
En esta seccin, usted aprender a construir sistemas en Simulink usando los bloques de
construccin en las Bibliotecas de Bloques de Simulink. Usted construir el sistema
siguiente.

Primero usted recoger todos los bloques necesarios de las bibliotecas del bloque.
Despus usted modificar los bloques para que ellos correspondan a los bloques en el
modelo deseado. Finalmente, usted conectar los bloques con las lneas para formar
el sistema completo. Despus de esto, usted simular el sistema completo para
verificar que funciona.
Recogiendo Bloques
Siga los pasos debajo para recolectar los bloques necesarios:

89

Cree a un nuevo modelo (Nuevo del men del Archivo o Ctrl-N). Usted conseguir
una ventana en blanco.

Presione en el cono de Fuentes de la la ventana principal de Simulink.

Esto abre la ventana de Fuentes la cual contiene la librera de bloques de fuentes. Las
fuentes son usadas para generar seales.

Arrastra el bloque del Escaln al lado izquierdo de la ventana de modelo.

90

Haz doble click en el icono Lineal en la ventana principal de Simulink para abrir
la ventana de Biblioteca de Bloque Lineal.
Arrastre los bloques de Suma, Ganancia, y dos casos de Funcin de
Transferencia (arrstrelo dos veces) en su ventana de modelo colocada
aproximadamente como mostrada debajo. La alineacin exacta no es importante
ya que puede cambiarse despus. Simplemente intente conseguir las
posiciones relativas correctas. El segundo bloque de Funcin de Transferencia
tiene un 1 despus de su nombre. Dos bloques no pueden tener el mismo nombre,
Simulink aade nmeros automticamente a los nombres de los bloques para
diferenciar entre ello

Haga doble click en el icono de los Sinks en la ventana principal de Simulink para
abrir la ventana de los Sinks.
Arrastre el bloque del Scope en el lado correcto de su ventana de modelo.

91

Modificar Bloques
Siga estos pasos para modificar los bloques propiamente en su modelo.

Haga doble click en su bloque de la Suma. para la segundo entrada que va a


sustraerse, entre +-en la lista de tipos de seales. Cierre la caja del dilogo.
Haga doble click en su bloque de Ganancia. Cambie la ganancia a 2.5 y cierre la caja
del dilogo.
Haga doble click en el bloque izquierdo de FuncinTransferencia . Cambie el
numerador a [1 2] y el denominador a [1 0]. Cierre la caja del dilogo.
Haga doble click en el bloque derecho de FuncinTransferencia . Deje el
numerador [1], pero cambia el denominador a [1 2 4]. Cierre la caja del dilogo. Su
modelo debe aparecer como:

Cambie el nombre del primer bloque de Funcin de Transferencia pulsando el


botn en las palabras "Transfiera Fcn". Una caja y un cursor editor aparecer en el
nombre del bloque como mostrado debajo. Use el teclado (el ratn tambin es til)
para borrar el nombre existente y teclear en el nuevo nombre, "Controlador
PI". Pulse el botn en cualquier parte fuera de la caja del nombre para terminar
92

la correccin.

Similarmente, cambie el nombre del segundo bloque de Funcin de


Transferencia de "Transfer Fcn1" a "Planta". En todos los bloques ahora, se
llaman apropiadamente. Su modelo debe aparecer como:

Conectando Bloques con Lneas


Ahora que los bloques propiamente etiquetados, usted los conectar entre s. Siga
estos pasos.

Arrastre el ratn desde la salida del bloque del Escaln al superior (positivo) la
entrada del bloque de la Suma. Suelte el botn del mouse solo cuando esta
correctamente acomodado en la entrada del siguiente bloque. No se preocupe por
el camino que usted sigue mientras arrastra el conector, la lnea se dirigir. Usted
debe ver a lo siguiente.

93

La lnea resultante debe tener una punta de flecha llena. Si la punta de flecha est
abierta, como mostrado debajo, significa no se conecta a nada.

Usted puede continuar la lnea parcial que usted dibuj tratando la punta de flecha
abierta como un trmino de salida y dibujando simplemente as como antes.
Alternativamente, si usted quiere volver a dibujar la lnea, o si la lnea se conect
a un trmino equivocado, usted debe anular la lnea y debe volverla a dibujar.
Para anular una lnea (o cualquier otro objeto), simplemente pulse el
botn en l para seleccionarlo, y oprima suprimir.
Dibuje una lnea que conecte la salida del bloque de Suma a la entrada del
bloque de Ganancia. Tambin dibuje una lnea de la Ganancia al Controlador PI,y
una lnea al Controlador PI de la Planta, y una lnea de

94

la Planta al scope. Usted debe tener lo siguiente ahora.

La lnea que queda sin ser dibujada es la realimentacin que conecta la salida de la
Planta a la entrada negativa del bloque de la Suma. Esta lnea es diferente en
dos maneras. Primero, esta lnea al ser dibujada debiera seguir el camino mas
corto (correctamente angulada) mas no sucede por lo cual debe ser dibujada en
varias fases. Segundo, no hay ningn trmino de salida de dnde empezar, para
que la lnea salga de una lnea existente.
Para dividir la lnea de salida, sostenga los Ctrl mientras arrastra el ratn del
punto en la lnea existente dnde usted quiere separarlas. En este caso,
simplemente empiece al derecho de la Planta. Arrastre hasta que usted consiga a
la esquina inferior izquierda de la lnea de realimentacin deseada como es
mostrado debajo.

95

Ahora, la punta de flecha abierta de esta lnea parcial puede tratarse como un
trmino de salida. Dibuje una lnea de l al trmino negativo del bloque de la Suma
de la manera usual.

Ahora, usted har coincidir los bloques entre s para una mejor apariencia.
Una vez conectado, a las posiciones reales de los bloques no causar problemas,
pero es ms fcil leer si ellos se alinean. Para mover cada bloque, arrstrelo con el
ratn. Las lneas se quedarn conectado y la realimentacin. Tambin pueden
arrastrarse los medios y esquinas de lneas a posiciones diferentes. Empezando a la
izquierda, arrastra cada bloque para que las lneas que los conectan estn
completamente horizontales. Tambin, ajuste el espacio entre los bloques
dejar el espacio para las etiquetas de las seales. Usted debe tener algo como:

96

Finalmente, usted pondr las etiquetas en su modelo para identificar las


seales. Para poner una etiqueta en cualquier parte en su modelo, haga
doble clic al punto que usted quiere la etiqueta. Empiece haciendo doble click
sobre la lnea que lleva del bloque del Escaln. Usted conseguir una
caja del texto en blanco con un cursor de edicin mostrado debajo:

Teclee un r en esta caja, etiquetando la seal de la referencia y pulse el


botn fuera de l para acabar la correccin.

Etiquete la seal del error (e) , la seal del controlador (u), y la seal de
salida (y) de la misma manera. Su modelo final debe aparecer como:

Para guardar a su modelo, seleccione Save As en el men del Archivo y teclee


en cualquier nombre.

Simulacin
Ahora que el modelo est completo, usted puede simularlo. Seleccione Start del
men de la Simulacin para ejecutar la simulacin. Haga doble click en el bloque del
Scope para ver su salida. Utilice los autoscale (los binoculares) y usted debe ver a
lo siguiente.

97

Tomando Variables desde MATLAB


En algunos casos, pueden calcularse parmetros, como la ganancia, en
MATLAB para ser usado en un modelo de Simulink. Si ste es el caso, no es
necesario entrar en el resultado del clculo de MATLAB directamente en
Simulink. Por ejemplo, suponga que calculamos la ganancia en MATLAB en la
variable K. Dele el valor desde la hoja de comandos del MATLAB tecleando
lo siguiente.
K=2.5
Esta variable puede usarse ahora en el bloque de Ganancia de Simulink. En su
modelo del simulink, haga doble click en el bloque de Ganancia y entre lo
siguiente en el campo de Ganancia.
K

Cierre esta caja del dilogo. Note ahora que el bloque de Ganancia en el
Simulink muestra el trmino K en lugar de un nmero.

98

Ahora, usted puede re-ejecutar la simulacin y puede ver la salida en el Scope. El


resultado debe ser igual que antes.
Ahora, si cualquier clculo se hace en MATLAB para cambiar cualquiera de las
variables usadas en el modelo de Simulink, la simulacin usar los nuevos valores la
prxima vez que se ejecuta. Para probar esto, en MATLAB, cambie la ganancia, K,
entrando en lo siguiente a la hoja de comandos. K=5

Empiece la simulacin en Simulink de nuevo, abra la ventana del Scope, y use el


botn del autoscale. Usted ver la salida siguiente que refleja la nueva y ms
alta ganancia.

99

Adems de variables, seales, e incluso sistemas enteros pueden


intercambiarse entre MATLAB y Simulink.

100

Bibliografa
[1] R.H. Bishop. Modern Control Systems Analysis and Design Using matlab.
Addison- Wesley, 1993.
[2] The MathWorks Inc. Control

System Toolbox Users Guide. 1999.

[3] The MathWorks Inc. simulink Users Guide, version 3. 1999.


[4] The MathWorks Inc. Using
[5] K. Ogata.

matlab, version 5.3.1. 1999.

Solving Control Engineering Problems with

matlab, year=1994, pub- lisher=Prentice Hall International Editions.


[6] B. Shahian and M. Hassul. Control
year=1993, pub- lisher=Prentice Hall.

System Design using matlab,

101

S-ar putea să vă placă și