Está en la página 1de 51

CURSO BSICO

DE
MATLAB

Dr. Ing. Marcos A. de Armas Teyra


Centro de Estudios de Energa y Medioambiente
Universidad de Cienfuegos

ndice
1
1.1
1.2
1.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5

1.3.6
1.3.7
1.3.8
1.4
1.5
2
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11

Introduccin.
La Ventana de MATLAB
Estructura de la Ayuda
Comandos y sintaxis bsica
Comandos de informacin general
Comandos de administracin del espacio de trabajo
Comandos y funciones de administracin
Constantes y variables especiales
Funciones matemticas
Hiperblicas
Complejas
Estadsticas
Operadores aritmticos y caracteres especiales
Operadores lgicos y relacionales
M-Files
Temporizacin
Control de la ejecucin y flujo de programas
Formato de Salida
Salvar una sesin de trabajo
Trabajo con arreglos, matrices y vectores
Definiciones
Generacin de matrices
Formacin de un vector fila
Formacin de un vector columna
Matrices elementales definidas en MATLAB
Libretos o guiones (scripts M-Files)
Funciones M-Files
Sub funciones y funciones anidadas
Crear nuevas funciones
Funciones annimas
Funcin funcin
Que usar? Libretos o Funciones?
Cadena de textos, entrada de datos y mensajes de errores
Creacin de variables globales
Lazos for y while

5
6
7
7
8
8
9
9
9

11
12
12
12
13
13
13
14
15
15
16
18
18
19
21
21
22
23
23
24
25
2

2.11.1 for
2.11.2l while
Condiciones if y switch
2.12
2.12.1 if
2.12.2 swith
Depurar y perfilar
2.13
Grficos
3
Grficos en dos dimensiones
3.1
Grficos tridimensionales
3.2
Ms sobre el comando plot
3.3
Salvar una figura
3.4
Publicacin de figuras
3.5
Subplot
3.6
Grficos de argumentos complejos
3.7
Mtodos numricos en MATLAB
4
Polinomios
4.1
Ms sobre ajustes de polinomios
4.2
Solucin de ecuaciones
4.3
Sistemas de ecuaciones lineales
4.4
Ecuaciones de regresin mltiple
4.5
4.5.1 Ecuaciones de regresin lineal mltiple
4.5.2 Ecuaciones de regresin polinmicas
Estadstica en MATLAB
4. 6
Matemtica simblica
5
Creacin de variables simblicas
5.1
Creacin de funciones matemticas simblicas
5.2
Simulink
6
Creacin de un modelo
6.1
Subsistemas
6.2
Enmascarar un sistema
6.3
Otros bloques de inters
6.4

25
25
26
26
27
28
28
28
30
31
32
32
33
34
34
34
36
37
38
40
40
41
41
42
42
44
48
48
49
50
53

Introduccin:
El propsito de este curso es realizar una conquista til, y en cierto grado especializada, de los fundamentos
esenciales del MATLAB con el objetivo de lograr las habilidades suficientes para incursar con xito en este
campo imprescindible del momento. MATLAB es un compendio computacional interdisciplinario en las
ciencias, ingeniera y en las matemticas aplicadas, con un poderoso lenguaje de programacin, clculo y
visualizacin que es comn emplearlo como herramienta de afinacin y validacin antes de que muchos
algoritmos y modelos sean definitivamente depositados en un lenguaje comercial ms propio para un
pblico general. Las aplicaciones tpicas de MATLAB incluyen:

Matemticas y clculos
Desarrollo de algoritmos
Modelaje, simulacin y establecimiento de prototipos
Anlisis de datos, exploracin y visualizacin
Grficos cientficos y de ingeniera
Desarrollo de aplicaciones, incluyendo la construccin de interfases grficas

MATLAB aporta una gran capacidad para la investigacin, el desarrollo y el anlisis de sistemas. En cada
versin MATLAB proporciona nuevos recursos y un escenario ms enriquecido. MATLAB posee una
familia de aplicaciones especficas conocidas como toolboxes desarrolladas para estudios especializados
que permiten resolver problemas diversos o muy particulares. Estas herramientas ocupan campos en redes
neuronales, lgica difusa, algoritmos genticos, sistemas de control, lgebra financiera, procesamiento de
imgenes y seales, fijacin de curvas, adquisicin de datos, y muchos otros que incrementarn la
productividad para resolver problemas esenciales. Estas herramientas no son ms que funciones de
MATLAB; M- Files que es posible enriquecer al crear funciones propias.
MATLAB, por tradicin, responde a rdenes escritas en la lnea de comandos o desde archivos. Sin
embargo, en las ltimas ediciones, se ha incrementado su accesibilidad desde interfases grficas con un
elevado nivel de interactividad especialmente til para comenzar. Los comandos tienen la ventaja de facilitar
la reproduccin y la repeticin de los resultados. MATLAB es relativamente sencillo de aprender y la mejor
forma de lograrlo es pasar directamente a ejecutarlo.
La formacin de variables en MATLAB se realiza con caracteres alfanumricos y cada variable debe estar
definida antes de que pueda ser empleada. Cuando una expresin arroja un valor, ste se almacena en la
variable ans la cual puede ser utilizada como cualquier otra variable. El mximo error, o la mxima precisin
con que se trabaja en la aritmtica de punto flotante, lo da la variable eps. Una vez que las variables hayan

sido definidas, existen en el espacio de trabajo; workspace. La existencia de una variable en el espacio de
trabajo permite ser empleada para mltiples objetivos.
1.1 La ventana de MATLAB
Cuando se inicia MATLAB, se presenta una ventana de varios paneles que es posible personalizar mostrada
en la Figura 1

Figura 1 Presentacin de MATLAB


El panel fundamental, con un diseo de mayor rea, es la ventana de comandos (Command Windows). En
ella se ordenan los comandos escritos a la derecha del prompt del sistema representado por el smbolo >>.
Una vez escrita una orden, MATLAB la ejecuta tan slo al presionar la tecla de entrada; (enter).
En la parte superior izquierda se encuentra la ventana del Directorio Actual (Current Directory). MATLAB
slo reconoce los archivos existentes en el directorio en uso. Los comandos para trabajar sobre el directorio y
la ruta (path), son cd, what, addpath y edithpath o escoger en el men archivo, establecer la ruta;

(File/set path). Mucho ms fcilmente se realiza seleccionando el directorio deseado en la pestaa grfica
del directorio actual. Es posible adicionar archivos a un directorio.
Aledao al Directorio Actual, est la pestaa del espacio de trabajo (Workspace) donde se muestra qu
variables estn definidas y cierta informacin sobre su contenido. En la ventana inferior se muestra el
Historial de Comandos (Command History) donde se registran las rdenes efectuadas en la ventana de
comandos. El registro histrico de comandos es persistente y se mantiene en distintas sesiones de trabajo de
modo que si es necesario, se puede copiar y archivar en un lugar apropiado.
Presionando el botn inicio de MATLAB; (Start), se encuentran las herramientas de aplicaciones, el acceso
a sus interfases grficas, la simulacin dinmica de sistemas, la conexin con la ayuda y otros temas que
facilitan el trabajo en el ambiente de MATLAB.
1.2 Estructura de la Ayuda
Una caracterstica especial e importante de MATLAB es el acceso en todo momento a la ayuda con una
viabilidad extraordinaria. En ella se abordan todos los tpicos con ejemplos y demostraciones. Por esta razn,
para iniciar el trabajo, es til conocer cmo est estructurada y qu posibilidades de ayuda brinda
MATLAB. Existen dos niveles de ayuda:
1. Si se necesita una ayuda rpida durante la sintaxis de un comando, se puede escribir sobre la ventana
de comandos la palabra help seguida del comando especfico que se desea investigar; por ejemplo
help plot. Si slo se escribe la palabra help recibir como respuesta una lista de categoras de ayuda
que contiene en el listado de todos los comandos.
2. Escribiendo doc seguido del nombre de un comando, recibir una ayuda ms general en una ventana
adicional mucho ms elaborada e informativa que con la alternativa help. En el panel izquierdo se
ver desplegado jerrquicamente toda la documentacin disponible. Si slo se escribe doc, o se
selecciona help del men, acudir la ventana raz de la ayuda.
Existen otros comandos de auxilio entre los que pueden mencionarse helpdesk que reporta una
documentacin para la solucin de problemas en forma de un hipertexto comprensivo, lookfor para la
bsqueda de M-files por palabras claves; info y support para informacin de MATLAB y MathWorks, etc
que deben ser explorados en trabajo individual recurriendo al listado de categoras de comandos.

1.3 Comandos y sintaxis bsicas


Una vez escrita una expresin vlida en la ventana de comandos y presionar la tecla de aceptacin; Intro,
MATLAB la ejecuta de inmediato mostrando el resultado tal y como lo hace una calculadora. De hecho, en
lo ms elemental, MATLAB puede ser utilizado como un calculador ordinario. Sin embargo, MATLAB es
muy superior cuando se aborda como un compendio de operaciones sobre arreglos, matrices y vectores. Por
esta razn, exige el conocimiento previo de los fundamentos bsicos del lgebra lineal y por su origen del
idioma ingls.
Las rdenes y sentencias en MATLAB se ejecutan mediante comandos de informacin, administracin,
aritmticos, de control, etc. A continuacin se muestra un grupo de comandos considerados bsicos. Para
una revisin mucho ms amplia y general de los comandos, se debe solicitar ayuda en help general.
1.3.1 Comandos de informacin General
Comandos
demo
ver
version

Acciones
Muestra todas las demostraciones que acompaan a la versin del MATLAB
Da informacin sobre la versin de MATLAB, Simulink y las herramientas del sistema
Muestra informacin sobre la versin en ejecucin de MATLAB

1.3.2 Comandos de administracin del espacio de trabajo.


Comandos
clc

Acciones
Limpia la ventana de comandos

clear

Elimina las variables en memoria

pack

Compacta la memoria del espacio de trabajo

exist

Chequea la existencia de una variable o archivo

global
help
lookfor

Declara globales a las variables


Bsqueda de auxilio en una materia determinada
Bsqueda por palabras claves

quit

Detiene el MATLAB

who

Lista las variables

whos

Lista las variables con mayor informacin

load

Carga las variables del espacio de trabajo desde un archivo

save

Salva las variables del espacio de trabajo

recycle
exit

Brinda la opcin de mover los archivos borrados a una carpeta de reciclaje


Salir del MATLAB
8

1.3.3 Funciones y comandos de administracin


Acciones
what

Realiza un listado de los archivos especficos en el directorio de MATLAB

type

Lista los M-file

open

Abre los archivos por extensin

which

Localiza funciones y archivos

inmem

Lista las funciones en memoria

1.3.4 Constantes y variables especiales


Variables

Interpretacin

ans

Respuesta ms reciente

eps

Precisin de la notacin con punto flotante

i,j

Unidad imaginaria

inf

Infinito

NaN
pi
why

No es un nmero
Nmero
Respuesta breve

1.3.5 Funciones Matemticas


Exponenciales y Logartmicas
exp(x)

Exponencial

ex

log(x)

Logaritmo Natural

ln(x)

log10(x)

Logaritmo base 10

log10 ( x)

sqrt(x)

Raz cuadrada

nthroot(x)

Raz n-sima de un nmero real

x
n

Trigonomtricas

acos(x)

Coseno inverso

cos 1 ( x)

asin(x)

Seno inverso

sen 1 ( x)

atan(x)

Tangente inversa

tan 1 ( x)

cos(x)

Coseno

cos(x)

sin(x)

Seno

sen(x)

tan(x)

Tangente

tan(x)

sec(x)

Secante

sec(x )

csc(x)

Cosecante

csc(x)
Hiperblicas

acosh(x)

Coseno hiperblico inverso

cosh 1 ( x)

asinh(x)

Seno hiperblico inverso

senh 1 ( x)

atanh(x)

Tangente hiperblica inversa

tanh 1 ( x )

cosh(x)

Coseno hiperblico

cosh(x )

senh(x)

Seno hiperblico

senh(x)

tanh(x)

Tangente hiperblica

tanh(x )

sech(x)

Secante hiperblica

sec h( x)

csch(x)

Cosecante hiperblica

csc h( x )

Complejas
abs(z)

Valor absoluto

angle(z)

ngulo de un nmero complejo

conj(z)

Complejo conjugado de Z

img(z)

Valor imaginario de Z

real(z)

Valor real de Z

Estadsticas
erf(x)

Calcula el error de la funcin (x)

mean(x)

Calcula el promedio

median(x)

Calcula la mediana

std(x)

Calcula la desviacin estndar

Operadores aritmticos y caracteres especiales


+

Operador de adicin

Operador de resta

Operador de multiplicacin escalar y matricial

.*

Operador de multiplicacin de arreglos elemento a elemento

Operador de potenciacin escalar y matricial

.^

Operador de potenciacin de arreglos elemento a elemento

10

Operador de divisin derecha

Operador de divisin izquierda

./

Operador de divisin derecha de arreglos elemento a elemento

.\

Operador de divisin izquierda de arreglos elemento a elemento

Punto decimal

Genera elementos espaciados regularmente y representa filas o columnas completas

Separador de columnas y evita desplegar, mostrar

Separa elementos y argumentos en una fila

( ), { }

Operador de continuacin de lnea


Encierra argumentos de funciones e ndices de arreglos: supedita precedencia

[]

Encierra elementos de arreglos

[,]

Concatenacin Horizontal

[;]

Concatenacin vertical

Establece un comentario

.'

Transpuesta

'

Complejo conjugado transpuesta

Asignacin

Operadores lgicos y relacionales


==

Igual a

~=

Desigual

<

Menor que

>

Mayor que

<=

Menor o igual que

>=

Mayor o igual que

&

Operador lgico AND

Operador lgico NOT

Operador de elementos lgico OR

xor

Operador lgico EXCLUSIVE OR

1.3.6 M-Files
eval

Interpreta las cadenas que contienen expresiones de MATLAB

feval

Evala la funcin

function
global

Crea un M-File definido para una funcin creada por el usuario


Define variables globales

11

nargin

Nmero de argumentos de entrada a una funcin

nargout

Nmero de argumentos de salida de una funcin

script

Guin, Argumento M-File

1.3.7 Temporizacin
cputime
clock
tic, toc

Tiempo en segundos de CPU


Fecha y tiempo corriente como vector de datos
Comenzar o detener un temporizador

1.3.8 Control de la ejecucin y flujo de programas


break

Termina la ejecucin de un lazo

case

Brinda ejecucin en trayectorias alternas dentro de la estructura de switch

else

Delinea bloques alternos de argumentos

elseif

Ejecuta condicionalmente los argumentos

end

Concluye los argumentos for, while e if

error
for
if
otherwise

Muestra mensajes de error


Repite los argumentos un nmero especfico de veces
Ejecuta los argumentos condicionalmente
Establece partes de los argumentos de switch

return

Regresa a la funcin invocada

switch

Dirige la ejecucin del programa comparando con expresiones de caso

warning
while

Muestra mensajes de alerta


Repite los argumentos un nmero indefinido de veces

1.4 Formatos de salida


Todos los clculos en MATLAB se realizan con doble precisin. El comando format puede utilizarse para
hacer cambios en la forma de visualizacin de los resultados. Entre ellos se encuentran:
Acciones
format

Por defecto. Igual al short

format short

Formato de punto fijo a escala con 5 dgitos

format long

Formato de punto fijo a escala con 15 dgitos

format short e

Formato de punto flotante con 5 dgitos

format long e

Formato de punto flotante con 15 dgitos

Format bank

Formato fijo para dlares y cntimos

Format rat

Aproximacin por relaciones de nmeros

>> pi
12

ans =
3.1416
>> format short; pi
ans =
3.1416
>> format long; pi
ans =
3.14159265358979
>> format short e;pi
ans =
3.1416e+000
>> format long e; pi
ans =
3.141592653589793e+000
>> format rat;pi
ans =
355/113
1.5 Salvar una sesin de trabajo.
Cuando se abandona MATLAB, todas las variables que existen en el espacio de trabajo se pierden. Si se
utiliza el comando save, las variables se almacenan en un archivo llamado matlab.mat. Una vez de nuevo
dentro de MATLAB, el comando load reestablece el espacio de trabajo al estado anterior.

2 TRABAJO CON ARREGLOS, MATRICES Y VECTORES


2.1 Definiciones
Un arreglo es una coleccin ordenada de elementos identificados por subndices para los que MATLAB
emplea nmeros integrales comenzando por el 1. La dimensin de un arreglo es el nmero de subndices
necesarios para especificar un elemento. El tamao (size) de un arreglo es un listado del nmero de ndices
mximo por dimensin.
Una matriz es un arreglo bidimensional con reglas especiales para la adicin, multiplicacin, divisin,
potenciacin y otras operaciones. Representa una transformacin matemtica lineal. Las dos dimensiones son
denominadas filas y columnas. Un vector es una matriz para la cual una dimensin tiene solamente el ndice
1. Un vector fila tiene slo un fila y un vector columna slo una columna.

13

Aunque un arreglo es mucho ms general y menos matemtico que una matriz, los trminos se usan a veces
de forma intercambiable. Algo ms: en MATLAB no existe realmente una distincin formal entre un escalar
y una matriz de 11. Note que no existe un arreglo unidimensional en MATLAB. An los vectores son
arreglos bidimensionales con una dimensin trivial.

2.1.1 Generacin de Matrices


Es posible introducir o generar matrices de diferente forma:

Introducir una lista de elementos


Cargarla desde datos externos
Generarla a partir de funciones de construccin
Crearla a partir de funciones propias en M-Files

Para introducir una matriz como una lista de elementos, se deben seguir las convenciones bsicas siguientes:

Encerrar entre corchetes; [ ] la lista de los elementos


Separar los elementos de una fila con espacios en blanco o comas
Usar el semicolon ; para indicar el fin de cada fila

Por ejemplo; Formacin de una Matriz cuadrada de 33


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

La dimensin de A es:
>> ndims(A)
ans =
2
El tamao de A es:
>> size(A)
ans =
3 3

14

2.1.2 Formacin de un vector fila:


>> B = [0 2 2]
B=
0 2 2

2.1.3 Formacin de un vector columna:


>> C = [0;2;2]
C=
0
2
2
Los arreglos y matrices pueden construirse de otros arreglos y matrices con la sola condicin de que sean
compatibles:
>> D = [A C]
D=
1 2 3 0
4 5 6 2
7 8 9 2
>> E = [A B]
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.
>> E = [A D]
E=
1 2 3
4 5 6
7 8 9

1
4
7

2
5
8

3
6
9

0
2
2

En ocasiones es necesario acceder a uno o ms elementos de un arreglo o matriz. Para ello se utilizan los
ndices dimensionales que identifican a cada elemento encerrado entre parntesis. El resultado es la
extraccin del elemento o bloque indicado. Ejemplos: Extraccin del elemento perteneciente a la fila 1

columna 2
>> E(1,2)
15

ans =
2
Extraccin de un bloque que comprende los elementos de la fila 1 y 2 que ocupan las columnas 2 y 3
>> E(1:2,2:3)
ans =
2 3
5 6
El operador colon (dos puntos); : , es muy importante en MATLAB. Con l se indica un intervalo de
variacin entre dos valores:
>> x = [1:10]
x=1 2 3

10

En este caso se asume por defecto un intervalo de 1 entre los puntos. Para especificar un paso de 0.5 se tiene:
x = [1:0.5:5]
x=
Columns 1 through 9
1.0000 1.5000

2.0000

2.5000

3.0000

3.5000 4.0000

4.5000

5.0000

En una matriz o vector el operador : permite seleccionar una parte del mismo. As en el vector y se obtienen
los elementos entre el 2 y el 5to. Lugar con la expresin:
>> y = x(2:5)
y = 1.5000 2.0000 2.5000 3.0000

2.1.4 Existen un grupo de matrices elementales definidas en MATLAB. Estas son:


zeros(x,y)

Arreglo de ceros

ones(x,y)

Arreglo de unos

eye(x,y)

Matriz identidad

repmat(x,y)
rand(x,y)
randn (x,y)

Reproduce una matriz.


Matriz de nmeros reproducidos de forma aleatoria
Matriz de nmeros aleatorios distribuidos normalmente

linspace (x,y)

Vector linealmente espaciado

logspace(x,y)

vector con espaciamiento logartmico

meshgrid(x,y) Arreglos de x y y para grficos en 3D.

16

Informacin bsica sobre los arreglos matrices y vectores.


size(A)

Tamao del arreglo

length(A)

Longitud o nmero de elementos de un vector.

ndims(A)

Nmero de dimensiones

numel(A)

Nmero de elementos

disp(A)

Mostrar la matriz o el texto

isempty(A)

Cierto si el arreglo est vaco

isequal(A)

Cierto si el arreglo es numricamente igual

Comandos bsicos de arreglos matrices y vectores


max(A)

Arroja el elemento mximo

min(A)

Arroja el elemento mnimo

sum(A)

Suma cada columna

prod(A)

Producto de cada columna

cat

Concatena arreglos

find

Encuentra los ndices de los elementos no nulos

end

ltimo ndice

diag

Matriz diagonal y diagonal de una matriz

triu

Extraer la triangulacin superior

tril

Extraer la triangulacin inferior

Vector espaciado regularmente e ndice dentro de una matriz

Aritmtica Matricial
dot
cross

Calcula el producto escalar


Calcula el producto vectorial

Comandos matriciales para resolver ecuaciones lineales


det

Calcula el determinante de un arreglo

inv

Determina el inverso de una matriz

rank

Determina el rango de una matriz

MATLAB posee, adems, un grupo de matrices especializadas para el trabajo en diferentes campos de la
ciencia que pueden ser consultadas en la ayuda. Entre ellas la matriz de Hilbert, Pascal, Mgica, Wilkinson,
Companion, Vandermonde, etc

17

2.2 Libretos o guiones (Script M-files)


Un libreto (script M-file) es un archivo externo a la lnea de comandos que contienen una secuencia de
sentencias u rdenes ejecutables de MATLAB. Escribiendo el ttulo del archivo en la ventana de comandos
se tiene acceso a la ejecucin y salidas correspondientes a este archivo. Por asignacin poseen la extensin
.m debido a ello se llaman M-files. Estos ficheros no necesitan ser compilados y para ser ejecutados, se debe
escribir su nombre en la lnea de comandos con la nica condicin de que se encuentre en la ruta; path,
donde MATLAB busca y reconoce sus archivos. Su utilidad fundamental es automatizar los bloques de
comandos en clculos que deben realizarse repetidamente y cuando se desea reproducir o interpretar el
trabajo realizado en un momento posterior.
Los libretos operan con las variables existentes en el espacio de trabajo o pueden crear nuevas que
permanezcan y se empleen en futuros clculos. Los libretos pueden producir salidas grficas usando
comandos como plot. Cualquier texto precedido del signo % en el inicio de un libreto se entiende como un
comentario lo cual es til si se desea obtener informacin del archivo al escribir help seguido del nombre del
archivo en cuestin en la lnea de comandos.
Por ejemplo se ha creado el libreto trigonometrica.m con los comentarios y argumentos siguientes
%Este archivo determina y grafica el %valor
de la funcin
% y = cos(x)+tan(x)/sin(x)
x = (0:0.2:pi);
y = cos(x)+tan(x)/sin(x);
plot(x,y)
En el prompt del MATLAB se escribe:
>> help trigonometrica
Este libreto determina y grafica el valor de la
funcin y=cos(x)+tan(x)/sin(x)

Para ejecutarlo
>> trigonometrica
2.3 Funciones M-files
Las funciones son M-files que extienden las capacidades de MATLAB. Comparadas con los libretos son
mucho mejores para compartimentar las tareas. Cada funcin comienza con una lnea del tipo:

Function [out1,out2, out3] = nombrefuncin(ini1,ini2,ini3)


18

Las variables ini1,ini2,ini3, son las variables de entrada y las out1,out2,out3, son las variables de salida . Se
pueden tener tantas funciones como se desee y llamarlas cuando se desee. La condicin para que sea
reconocida una funcin es que sea guardada en un archivo con el mismo nombre declarado en la sintaxis; es
decir: en un archivo nombrefuncin.m . Para ejecutarla slo es necesario escribir en la lnea de comandos su
nombre al igual que en los libretos.
Unas de las principales caractersticas de una funcin es el carcter local de sus variables. Cualquier
argumento o variable creada durante la ejecucin de la funcin, son variables slo de esa funcin y poseen un
espacio privado de trabajo. Por su parte las variables existentes en la lnea de comandos o workspace, no son
reconocidas por la funcin.
Como ejemplo se ha creado un archivo con una funcin llamada stat cuyo objetivo es determinar la media y
la desviacin estndar de un vector x.

function [mean,stdev] = stat(x)


x = [1:100]
n = length(x);
mean = sum(x) / n;
stdev = sqrt(sum((x - mean).^2)/n);
Si durante la ejecucin de una funcin, se llaman otras funciones, cada una de stas establece su propio
espacio de trabajo lo que permite crear programas complejos sin preocuparse por antagonismos en las
variables mientras se conservan las pertenecientes al espacio de trabajo.

2.4 Subfunciones y funciones anidadas.


Un M-file puede tener definida ms de una funcin. La funcin principal al inicio del encabezamiento de la
lnea define la funcin primaria. En el mismo archivo pueden existir subfunciones y funciones anidadas.
Por ejemplo: Ahora se ha creado dentro del archivo stat.m una nueva expresin identificada con la palabra
clave avg que es una subfuncin de la funcin stat(x)
function [mean,stdev] = stat(x)
x = [1:100];
n = length(x);
mean = avg(x,n);
stdev = sqrt(sum((x-avg(x,n)).^2)/n)
end %stat (x)
19

function mean = avg(x,n)


mean = sum(x)/n;
end %avg (x,n)
Las subfunciones no son visibles fuera del archivo donde han sido creadas por lo tanto no pueden ser
llamadas desde la lnea de comandos. Cuando MATLAB no reconoce una funcin por su nombre, busca por
un archivo con el mismo nombre. Si lo encuentra, lo compila en la memoria para uso subsiguiente. Cuando
es llamada una funcin desde la lnea de comando o desde cualquier otro M-File, MATLAB analiza la
funcin y la almacena en memoria. La funcin almacenada permanece en memoria hasta que sea limpiada
con el comando clear o se abandone MATLAB.
El argumento end es opcional si se tiene una sola funcin, pero es una buena idea cuando estn involucradas
subfunciones y obligatorio cuando se usan funciones anidadas. Las funciones anidadas actan algo
diferente. Ellas son definidas dentro del alcance de otra funcin y comparten el espacio de trabajo de la
funcin receptora. Para escribir una funcin anidada, simplemente define la funcin dentro del cuerpo de
otra funcin en un M-File. Se debe terminar la funcin anidada con un argumento final end. Por ejemplo:

function x = A(p1, p2)


...
function y = B(p3)
...
end
...
end
Ejemplo de ms de una funcin anidada dentro de A.
function x = A(p1, p2)
...
function y = B(p3)
...
end
function z = C(p4)
...
end
...
end

20

2.5 Crear nuevas funciones.


En MATLAB se pueden crear nuevas funciones si es conveniente. Por ejemplo: se desea definir una nueva
funcin con nombre sincos(x) de forma tal que al invocarla en la lnea de comandos devuelva el resultado de
la expresin correspondiente. Para ello se crea un archivo con extensin .m que contenga la definicin de la
funcin y con un nombre que coincida con el nombre de la funcin. Para el caso sincos.m:

function[y]=sincos(x)
y=cos(x)-2*sin(2*x-pi/3);
Se salva en el subdirectorio de trabajo con el nombre sincos y la extensin .m. Esta es la forma en la cual
estn escritas las funciones en MATLAB. Note cmo no hay declaracin de variables, ni comandos de inicio
o fin de programa.

2.6 Funciones annimas


En ocasiones se necesita definir una funcin temporalmente y evitar la edicin de un M-File. Para ello se
utiliza la funcin annima que se puede construir desde la lnea de comandos o en una funcin M-File. Su
sintaxis es:

fhandle = @(arglist) expr


El trmino expr representa el cuerpo; esto es: el cdigo que identifica la tarea principal que se debe ejecutar.
A la izquierda est arglist, que es una lista de variables o argumentos de entrada separados por coma que
deben pasar a la funcin. Estos dos componentes son similares a lo conocido en las funciones ya tratadas. El
signo @ es un operador en MATLAB que construye un manejador de funciones. Crear un manejador de
funciones proporciona un medio de invocar a la funcin annima. El signo @ es una parte requerida de una
funcin annima.
Ejemplo: La funcin annima sqrt calcula el cuadrado de un nmero. Cuando se llama a esta funcin,
MATLAB le asigna el valor que posee a la variable x y lo usa para calcular el valor de la ecuacin x.^2:

>>sqrt = @(x) x.^2;


>> sqrt(4)
ans =
16
Tambin puede almacenarse la respuesta en una variable adicional

21

>> a=sqrt(4)
a=
16

Ejemplo con dos entradas


La funcin annima siguiente emplea dos argumentos de entrada x, y.
sumAxBy = @(x, y) (A*x + B*y);
En la lnea de comandos se escribe:
A=2;
B=4;
>> sumAxBy = @(x, y) (A*x + B*y);
sumAxBy(2,2)
ans =
12

2.7 Funcin funcin


Muchos problemas en el campo de la ciencia emplean o exigen operar con funciones; encontrar races,
resolver ecuaciones diferenciales, optimizar o efectuar la integracin numrica, son slo algunos ejemplos
citados. En determinados casos un problema complejo puede tratarse con una funcin que opere sobre
determinada funcin. Este tipo de procedimiento MATLAB lo realiza con una funcin de funciones;
function functions, que utiliza una o ms funciones como argumentos de entrada a una funcin, que va a ser
evaluada para obtener los resultados deseados. La sintaxis, el objetivo y el contenido de estas funciones
pueden verse al solicitar help funfun en la lnea de comandos.
Una forma de realizar este procedimiento es mediante una funcin annima. Por ejemplo:
La funcin fzero, encuentra la raz de una funcin escalar de una variable en la proximidad del punto
declarado; Primeramente encuentra un intervalo conteniendo a x donde la funcin cambia de signo y a
continuacin busca en ese intervalo el cero de la funcin. Su sintaxis es:
x = fzero (fun, x0) La funcin fun acepta como parmetro de entrada valores de x reales escalares y
retorna valores reales escalares de la funcin fun evaluada en el punto x. El valor que retorna fzero est en la
proximidad donde fun cambia de signo si es continua o NaN si el proceso de bsqueda falla. Ejemplo:
>> f=@(x) sin(x);
>> fzero(f,2)

22

ans =
3.1416

Otro ejemplo:
La funcin x = fminbnd (fun, x1, x2) trata de encontrar un mnimo local de la funcin fun en el intervalo

x1 <= x <= x2.


>> f = @(x) 3*x^2+5*x-2;
>> y = fminbnd (f, 2, 6)
y=
2
>> y = fminbnd (f, -15, 6)
y=
-0.8333

2.8 Que utilizar? Libretos o funciones?


Los scripts o libretos son siempre interpretados y ejecutados lnea a lnea no importa el nmero de veces que
sean llamados y, por supuesto, MATLAB emplea tiempo en ello. En contraste, las funciones son compiladas
en memoria cuando se llaman por primera vez y si son necesaria llamarlas de nuevo, se esquiva ese paso. Por
esta razn se recomienda realizar la programacin en trminos de funciones M-Files. Como regla prctica,
los libretos se deben de llamar slo desde la lnea de comandos y no se deben llamar desde otro libreto.

2.9 Cadenas de textos, entrada de datos y mensajes de errores


Las cadenas de textos pueden introducirse en MATLAB al encerrar el grupo de palabras en simple comilla.
Por ejemplo para asignarle a la variable s una cadena de texto se escribe:

s = Esto es una demostracin para establecer una cadena de texto


Las cadenas de texto se muestran con el comando disp. Por ejemplo:
>> disp(s)
Esto es una demostracin para establecer una cadena de texto

23

Los mensajes de error se muestran ms adecuadamente con el comando error ya que cuando se sita en un
M-File, se aborta la ejecucin del mismo.
En un M-File, se puede actuar interactivamente para la entrada de datos con la funcin input. Por ejemplo:
>> Pn = input ('Potencia nominal en kW, Pn= ');
Potencia nominal en kW, Pn =
En este caso se despliega un mensaje en el prompt y se realiza una pausa en la ejecucin del programa hasta
que se introduzca el dato solicitado. Presionando la tecla de aceptacin, el dato se asigna a la variable
solicitada y se contina la ejecucin del programa.
Finalmente es necesario saber que en las funciones de MATLAB se pueden encontrar rdenes que son
imposibles de ejecutar. En este caso se emite una seal de error desplegando un mensaje en la ventana de
comandos, se detiene la ejecucin del programa y se ignoran los argumentos de salida de la funcin. Similar
a un error es la seal de alerta (warning) la cual despliega un mensaje pero permite que la ejecucin
contine. Es posible crear estas seales de alerta e incluso tener la capacidad de esquivar un error en una
subrutina y continuar con un plan de contingencia usando los comandos try y catch. Con este objetivo se
debe consultar la ayuda

2.10 Declaracin de variables globales


Cada funcin en MATLAB definida en un M-File posee sus propias variables locales las cuales son
independientes de las variables de otra funcin y de las que se encuentran en el espacio de trabajo
(workspace). Desde luego, si varias funciones y el espacio de trabajo declaran una variable en particular
global, todos compartirn esa variable. Cualquier asignacin a esa variable, en cualquier funcin, est
disponible a todas las otras funciones que la declaran global. Si la variable declarada global no existe en el
momento que se ha declarado global, tomar por asignacin el valor de una matriz vaca. Si una variable con
el mismo nombre que la variable global existe en el espacio de trabajo, MATLAB emite una alerta y
cambia el valor de esa variable para que concuerde con la declarada global. Ejemplo:

global Vab Vbc Vca Ia Ib Ic Pt St FDVC ; declara globales esas 9 variables

24

2.11 Lazos for y while


Las condicionales en MATLAB operan de forma similar a como lo hacen en la mayora de los programas de
computacin. Ellas son especialmente tiles cuando se desea repetir o desviar una seccin de clculos en
dependencia de las condiciones en la rutina.

2.11.1 for
La instruccin for se utiliza para repetir un argumento un nmero especfico de veces. La sintaxis general es:

for variable = expresin


argumento
...
argumento
end
Los valores de la expresin son almacenados uno a la vez en la variable mientras el siguiente argumento,
hasta el ltimo, es ejecutado. En la prctica la expresin es casi siempre de la forma escalar : escalar. El
alcance del argumento for se concluye con la orden end.

>> for x =1:4


y = 2*x
end
y=
2
y=
4
y=
6
y=
8
2.11.2 While
while repite los argumentos un nmero indefinido de veces mientras se mantenga una condicin. Su sintaxis
es:
while expresin
argumentos
25

end
Los argumentos son ejecutados mientras la expresin sea cierta. Por ejemplo, dado un nmero positivo x, se
calcula y se muestra el menor nmero no negativo que cumple la relacin 2n +2n x

>> x = 16;
n = 0;
while 2^n +2*n < x
n = n+1;
end
>> n
n=
4
2.12 Condicionales if y switch
Cuando se necesita modificar la ejecucin de los argumentos en dependencia de las condiciones en la rutina,
se utilizan comandos condicionales similares a los utilizados en otros lenguajes.

2.12.1 if
La forma ms simple de un argumento condicional if es:

if relacin
argumento
end
En este caso el argumento ser ejecutado slo si la relacin es cierta. Tambin es posible utilizar mltiples
ramas como se muestra a continuacin:
if x > 6
y = x^2 +3
elseif -1< x<6
y = 2*x^2+3*x-1

else
y = 0.98
end
El condicionante if puede emplear operadores relacionales o funciones que retornen valores lgicos as como
condicionantes lgicos combinados evaluados de izquierda a derecha. Por ejemplo:
26

if (length (x) > 4) & (x(3) = =2)


argumento
end
La sintaxis if / elseif se emplea cuando son dos o tres las opciones que presenta una condicional. Cuando
existe un nmero mayor de opciones, se emplea switch

2.12.2 switch
El comando switch cambia o permuta entre varios casos de acuerdo a la expresin. La forma general de
sintaxis es:
switch switch_expr
case case_expr,
argumento
case {case_expr1, case_expr2, case_expr3,...}
argumento ...

otherwise
argumento
end
Los argumentos que siguen al primer caso son ejecutados si coinciden con la expresin de cambio declarada.
Cuando la expresin de cambio se encuentra en un arreglo como en el segundo caso, el cambio se ejecuta si
slo uno de los elementos del arreglo coincide con la expresin de cambio. Si ninguno coincide, se pasa a la
opcin otherwise. Slo se ejecuta un caso y la ejecucin concluye con el argumento final end. Por ejemplo:
>> x = 6;
switch x
case x > 2
disp ('bien')
case x <2
disp ('mal')

otherwise
x = 0.1
end
x=
0.1000

27

2.13 Depurar y perfilar


Para depurar un programa que no corre, se pueden establecer puntos de rupturas breakpoints en una o ms
funciones (Ver el men debut en el editor de M-Files). Cuando MATLAB alcanza un breakpoint, se detiene
y permite inspeccionar y modificar las variables. La ejecucin se puede reiniciar normalmente o paso a paso.
Para ms detalles solicitar help debug.
Cuando un programa emplea ms tiempo que el necesario para ejecutarse, se puede optimizar su ejecucin.
Es posible localizar las lneas retardadas con profiling que mantiene el control del tiempo empleado en cada
lnea de cada funcin. Perfilar es tambin una va de determinar la dependencia de las funciones. Para
introducirse se debe escribir en la lnea de comandos profile viewer.

3. Grficos
Una de las fortalezas de MATLAB es el tratamiento grfico. MATLAB posee control sobre todos los
aspectos de un grfico adjudicndole poder, elegancia y disfrute en la ejecucin.

3.1 Grficos en dos dimensiones; x, y


Para desarrollar grficos en dos
dimensiones MATLAB dispone de
un
comando
fundamental
denominado plot. Normalmente se
utilizan segmentos de lnea para
conectar
los
puntos
correspondientes a los vectores de
x, y.
Existen
coordenadas
diversos recursos para resaltar o
distinguir los pares ordenados de
un grfico. Un ejemplo que se
recomienda desarrollar en la
ventana de comandos:

x=[-pi:0.1:pi];
y=cos(x) - 2*sin(2*x-pi/3);
plot(x,y);
xlabel('coordx');
ylabel('coordy');
title('funcin trigonomtrica');
28

grid on;
En la primera lnea se define el intervalo de variacin de las x, en la segunda se calcula la expresin de y a
partir de las funcin trigonomtrica definida. En la tercera lnea el comando plot calcula y muestra la
grfica de los pares (x, y). Los comandos xlabel , ylabel y title tienen como objetivo imprimir en el grfico
el nombre que se le dar a los ejes x ,y y su ttulo. La funcin grid on activa una rejilla en el intervalo en
que ha sido evaluada la funcin. La ayuda de MATLAB brinda ms posibilidades para cambiar el color de
las lneas, marcar con puntos, cruces, crculos, etc los pares (x,y). Consulte la ayuda del MATLAB para ms
posibilidades. Los comandos zoom y ginput permiten aproximar y precisar puntos sobre la grfica.
Si se desean obtener varios grficos superpuestos (deben ser compatibles), se emplea el comando hold on
Con la interfase grfica y los botones de la
barra de men principal se pueden realizar
diversas transformaciones y obtener una
figura como la mostrada a la derecha.
En el ejemplo a continuacin se muestra el
trabajo con la herramienta de ploteo de
MATLAB para graficar una variable
existente en el espacio de trabajo;
(workspace), vs una expresin escrita en el
dilogo Add Data de Plot tools. Los pasos
son:
1.- Se crea una variable en el espacio de

trabajo denominada x = -2*pi:pi/25:2*pi;


2.-Haciendo clic en el botn inicio en la
ventana de MATLAB ir a MATLAB y
hacer clik en la herramienta Plot tools.
3.- Hacer Click en 2D Axes en el panel de la
Figure Palette.
Una vez que aparezcan los ejes, se activa el
botn de adicionar datos; Add Data, en el
navegador de ploteo. Con esta accin se
despliega la ventana para adicionar datos a
los ejes; Add Data to Axes.

29

4.- Cuando el dialogo se despliega, se procede de la forma siguiente:


a) Se selecciona el tipo de grfico que se desea en Plot Type; lineal, logartmico, semilogartmico, polar,
etc.
b) Se establece como fuente de datos el
vector x declarado o existente en el
espacio de trabajo.
c) Se escribe en y la funcin que se
desee. (Para el caso sin(x).^2. ) y se
hace clic en aceptar; ok

MATLAB dibuja el grfico de


sin(x).^2 vs. x.
Para agregar otro grfico sobre los
mismos ejes se procede de la forma
siguiente:
1.- Se hace click otra vez en Add Data y se especifican los datos a plotear:
2.- Se establece como fuente de datos el vector x existente en el espacio de trabajo.
3.- Se escribe en y la nueva funcin que se desee. (Para el caso sin(x). ^8. ) y se hace clic en aceptar; ok
4.- MATLAB dibuja el grfico de sin(x). ^8 vs x.
5.-Seleccione el ltimo grfico y establezca en el Plot Type del Property Editor el tipo de grfico que
desea para esta segunda funcin
Para acceder a todas las propiedades de la figura se visita el inspector.

3.2 Grficos tridimensionales


El primer paso para crear un grfico
tridimensional es conformar una malla
de puntos en el plano (x,y). Esos sern
los puntos donde la funcin f ser
evaluada para obtener las respuestas en
la dimensin z. Un ejemplo:
x = pi*(0:0.02:1);
y = 2*x;
[x,y] = meshgrid(x,y);
surf(x,y,sin(x.^2+y))
Una vez que el grfico se ha creado, se
utiliza el botn de rotacin de la figura para darle la vista que se desea ver en la pantalla.
30

Para adicionar el ttulo de la figura, de los ejes y las propiedades de stos, se utilizan las opciones de edicin
grafica que proporciona la barra de men de la figura. La rotacin, el rotulado de ejes y el ttulo de la figura
se han adicionado por este procedimiento y se muestra a la derecha.

3.3 Ms sobre el comando plot


En un grfico se pueden obtener diversos tipos de lneas, smbolos y colores con el comando plot(x,y,s)
siendo s una cadena de caracteres compuestos por elementos de las columnas siguientes:

Estilos

Smbolo

Color

slida

puntos

azul

con puntos

crculos

verde

-.

punto y raya

cruces

rojo

(none)

sin lnea

ms

cianurado

-- guionada

estrellas

magenta

cuadrados

amarillo

diamantes

negro

tringulos (hacia abajo)

tringulos (hacia arriba)

<

tringulos (a la izquierda)

>

tringulos (a la derecha)

pentagrama

hexagrama

Por ejemplo plot(x,y,g+:) grafica con una lnea de cruces color verde en cada punto donde se han
evaluado los datos. plot(x,y,bd) dibuja un diamante azul en cada punto pero sin lnea.
El comando plot, si no especifica el color, toma por asignacin el azul para grficos de una lnea y en el caso
de un grfico de mltiples lneas utiliza el ciclo de colores listado en la tabla. Si no se especifica el tipo de
lnea, se usa una lnea slida. Si no se especifica el smbolo, no se emplea ninguno. Para ms informacin
consultar help plot.

3.4 Salvando las figuras.


En ocasiones sucede que una figura necesita ser modificada despus de su creacin. Aunque existen otros
procedimientos para salvarla, en la barra de men de la figura; botn archivo; en save as, se salva como un

31

archivo del tipo *. fig con el nombre que se desee. Luego, con el comando; openfig myfig puede llamarse
para efectuar las transformaciones o recrearla como se desee.

3.5 Publicacin de figuras


Existen tres cuestiones importantes que deben considerarse cuando se desea incluir algn grfico de
MATLAB en un documento para su publicacin. El formato del archivo, el tamao y posicin y el color.
Ayuda a comprender la importancia el hecho de que lo que desee ve en la pantalla no es exactamente lo que
se obtiene en el papel porque MATLAB distorsiona los grficos dependiendo del dispositivo de salida.
La gran diferencia en los formatos de los grficos est entre la seleccin de vector (representando las lneas
en una imagen) y bitmap (una fotografa literal pxel a pxel). Bitmaps incluyendo GIF, JPEG, PNG, y TIFF,
son apropiados para fotografas pero no para otras aplicaciones cientficas. Esos formatos fijan la resolucin
de su imagen por siempre, mientras la resolucin de su pantalla, impresora y la impresora de la revista
pueden ser todas muy diferentes. Los formatos vectoriales son usualmente una mejor opcin. Entre estos se
encuentran EPS y WMF. La seleccin depende algo de su plataforma y procesador de palabras.
Un problema comn con la publicacin de grficos en MATLAB es el tamao. Por asignacin, los grficos
en MATLAB son hechos en 86 pulgadas sobre el papel. Esto es excesivo para muchas revistas y para uso
privado. En estos casos se reescala la imagen. Desde luego, el proceso de reescalar reduce todo incluyendo el
ancho de las lneas y el tamao del texto y el resultado puede ser difcil de leer. Para este procedimiento se
sugiere reescalar el grfico antes de exportarlo. Para reescalar antes de exportar se puede utilizar la opcin
de edicin grfica que proporciona la barra de men de la figura; Archivo / Page Setup.
Muchas revistas no aceptan figuras a color. Las lneas coloreadas son convertidas automticamente a negro
cuando se salvan en un formato sin color. De esta forma se deben distinguir las lneas por otras caractersticas
tales como smbolos o estilo de lnea. La opcin Archivo/Export setup de la barra de men de la figura,
brinda un procedimiento para introducir cambios en la apariencia incluyendo el tamao y color en diferentes
contextos (imprimir, presentacin, etc.).
Finalmente es una buena idea salvar la figura en formato *.fig para ser recreada y en formato EPS en el
mismo directorio.

3.6 Subplot
El comando subplot permite desplegar varias figuras en la misma ventana o imprimirlas en la misma hoja de
papel. La sintaxis:

32

subplot(m,n,p)
Tiene la funcin de crear una matriz de (m filasn columnas) de grficos numerados por filas comenzando
por la primera fila y a continuacin la segunda fila, etc. Subplot selecciona el orden p para ubicarlo. Por
ejemplo para plotear datos en cuatro regiones diferentes de una ventana de figuras:
t=[-pi:0.1:pi];
[X,Y,Z]=cylinder(4*cos(t) - 2*sin(2*t-pi/3));
subplot(2,2,1)
mesh(X)
xlabel('X');
ylabel('Y');
zlabel('Z')
title('Funcin muy especial');
subplot(2,2,2):mesh(Y)
xlabel('X');
ylabel('Y');
zlabel('Z')
subplot(2,2,3):mesh(Z)
xlabel('X');
ylabel('Y');
zlabel('Z')
subplot(2,2,4):mesh(X,Y,Z)
xlabel('X');
ylabel('Y');
zlabel('Z')
La posicin es:

subplot(2,2,1) subplot(2,2,2)
subplot(2,2,3) subplot(2,2,4)

Con las opciones el men en la barra de la figura se puede modificar cada uno de los grficos obtenidos.

3.7 Grficos de argumentos complejos


Cuando los argumentos a graficar son complejos, la parte imaginaria es ignorada excepto cuando el ploteo se
realiza sobre un argumento complejo simple z. Para este caso especial se grafica la parte real contra la
imaginaria.

33

4 Mtodos numricos en MATLAB


4.1 Polinomios
La representacin de polinomios en MATLAB se realiza mediante la escritura del vector de sus coeficientes
en potencias decrecientes. As el polinomio p ( x) = 2 x 2 + 3 x + 4 est dado por:
x = [2,3,4];
Las races del polinomio se obtienen con la funcin roots
roots(x)
ans =
-0.7500 + 1.1990i
-0.7500 - 1.1990i
Para el trabajo con polinomios existen un grupo de comandos con funciones especficas. Estos son:

poly
El comando poly(x), cuando x es el vector de las races del polinomio, arroja como respuesta un vector cuyos
elementos son los coeficientes del polinomio original con las races x. Si roots encuentra las races, poly
encuentra el polinomio que posee determinadas races. roots y poly son funciones inversas para vectores.
Para evaluar un polinomio en varios puntos se emplea la funcin polyval.
x = [0:.1:2];
a = [3,4,5];
y = polyval(a,x);
plot(polyval(a,x),'r')
Una cuestin que puede resultar
importante en el trabajo con polinomios
es el ajuste de un conjunto de datos
experimentales (x, y) a un polinomio de
cierto grado segn el criterio de los
mnimos cuadrados.
Esto se realiza con polyfit. Ejemplo:
Dado un conjunto de datos:
x = [ 1 2 3 4 5];
y = [ 3.5 8.9 19 30.6 49.3];
>> b= polyfit(x,y,2);
>> plot(x,y,'r+')
hold on
34

plot(polyval(b,x))
El polinomio de grado 2 que se ajusta por mnimos cuadrados es:

b= polyfit(x,y,2)
b =[2.0071 -0.7129 2.3200]
Las ltimas rdenes se han dado para graficar los puntos experimentales y el resultado de la ecuacin de
ajuste con la intencin de comprobar visualmente la aproximacin
La interpolacin es el proceso matemtico mediante el cual a partir de un conjunto de puntos discretos de una
funcin es posible estimar sus valores en el intervalo. Existen diversas funciones en MATLAB que permiten
realizar estos clculos. Una de ellas es interp1 que realiza una interpolacin lineal por el mtodo de los
mnimos cuadrados. Como ejemplo se toma el conjunto de pares ordenados de resistencia y temperatura de
un termopar con los valores siguientes:

R= [77.8

79.75 80.8 82.35 83.9 85.1]

T= [25.1 30.1 36.0 40.1

45.2 50.5]

Para determinar la temperatura en un punto intermedio de la tabla, por ejemplo 27.5 se procede:

Rt = interp1(T,R,26.5)
Rt = 78.3460
El resultado corresponde a la interpolacin lineal entre los dos primeros pares de los vectores T y R.
Existen otros mtodos de interpolacin que deben ser revisados consultando las posibilidades de ayuda de
MATLAB. Los polinomios pueden ser derivados e integrados con los comandos polyder y polyint.

4.2 Ms sobre
polinomios.

el

ajuste

con

Un ejemplo de interfase grfica es


polytool. Considrese el conjunto de
datos siguiente:
y = [.5 .82 1.14 1.25 1.35 1.40]
x= [0 0.3000 0.8000 1.1000 1.6000
2.3000]

polytool (x,y) ajusta el polinomio a los


pares (x,y) y despliega un grfico
interactivo.

35

polytool(x,y,n,alpha) predice una grfica que responde a un polinomio de orden n en los puntos (x,y) y
adicionalmente indica el intervalo de confidencial 100(1-alpha) en forma de dos lneas de color rojo. El
valor por asignacin de n es 1 y el de alpha es 0.05. Para ms informacin consulte la ayuda help polytool
4.3 Solucin de Ecuaciones.
Una de las formas en que MATLAB resuelve ecuaciones es con el empleo de las funciones: fzero, fplot,
quad y quad8 que permiten hallar los ceros, graficar y realizar la integracin numrica de funciones no
lineales. Considere el clculo de los ceros empleando la funcin fzero de la funcin:
1

y ( x)
2

5.x 6

Primero se edita un archivo M-file que denote la funcin, denominado fun1.


Para graficar este tipo de funciones se
puede usar la funcin fplot. A la izquierda
se muestra el resultado de plotear fun1 en el
intervalo de 0 a 5.
Donde se nota que la funcin se indefine en
dos puntos y tiene dos ceros en 1.62 y 3.37.
Los ceros se obtienen llamando a la funcin
de la forma siguiente:

Fun1(x)
10

-5

-10

-15
0

0.5

1.5

2.5
x

3.5

4.5

cero1=fzero('fun1',0)
cero1 =1.6340
cero2=fzero('fun1',3.2)
cero2 = 3.3660

Es posible calcular la integral numrica de la funcin fun1 entre dos puntos, con la funcin quad. Para ello
se escogen valores donde no se indefine la funcin:

area=quad('fun1',2.1,2.9)
area = -5.9945
4.4 Sistemas de ecuaciones lineales.
Para la solucin de sistemas de ecuaciones lineales se emplea el lgebra lineal. El sistema de ecuaciones
lineales:
36

x1 + x2 + 2 x3 = -1
2x1 - x2 + 2x3 = -4
4x1 + x2 + 4x3 = -3
Es posible representarlo por la matriz A de los coeficientes de las incgnitas y el vector columna b de los
trminos independientes:
Ax=b
A = [1 1 2; 2 -1 2; 4 1 4]

A=
1
2
4

1
-1
1

2
2
4

b = [-1 -4 -3]'
b=
-1
-4
-3
Para que el sistema tenga solucin, el determinante debe ser no singular. Esto se comprueba con la funcin

det.
det(A)
ans = 6
Una solucin del sistema se obtiene al emplear el mtodo de Kramer, donde x1 se obtiene al sustituir en
la matriz original la columna 1 por el vector columna del trmino independiente y efectuar la divisin
entre los determinantes correspondientes:
A1 =
-1
-4
-2

1
-1
1

2
2
4

x1=det(A1)/det(A)

37

x1 =
1
Y as sucesivamente para cada variable. Sin embargo esto es posible hacerlo en forma directa con el
operador \ . Obteniendo directamente el vector x de las incgnitas:
x= A \ b
x=
1
2
-2

Tambin puede implementarse el mtodo de eliminacin de Gauss o factorizacin LU, que expresa que
cualquier matriz cuadrada se puede descomponer en el producto de dos matrices L y U triangulares, una L
triangular inferior permutada y otra U triangular superior. Esto se calcula con la funcin lu.

[L, U] = lu(A)
L=
0.2500 -0.5000
0.5000 1.0000
1.0000
0

1.0000
0
0

U=
4.0000 1.0000 4.0000
0 -1.5000
0
0
0 1.0000
L*U
ans =
1 1
2 -1
4 1

2
2
4

Permitiendo calcular x ms eficientemente mediante:

x = U \ (L \ b)
x=
1
38

2
-2

4.5 Regresin Lineal Mltiple


El propsito de una ecuacin de regresin lineal mltiple es establecer una relacin cuantitativa entre un
grupo de variables de prediccin insertadas por columna X y la respuesta Y. Esta relacin es til para:
1.- Conocer que variables poseen el mayor efecto sobre la respuesta Y
2.- Conocer la direccin de ese efecto.
3.- Usar el modelo para predecir valores futuros cuando slo se conocen o planifican los valores predictores

4.5.1 Ecuaciones de regresin lineal mltiple


Si Y es una funcin de varias variables independientes X, es posible encontrar los coeficientes que afectan
cada variable para determinar la ecuacin general que caracteriza al sistema. Por ejemplo: Sean MP, P y B
los vectores columnas de las variables independientes que determinan el consumo de energa elctrica; MWh,
de una empresa. En este caso la ecuacin de regresin lineal estara dada por:
Electrica = Kowh + K1wh*MP + K2wh*P + K3wh*B
El problema se resuelve al determinar los coeficientes Kiwh para lo cual se emplea la sintaxis:

X = [ones(size(MP)) MP P B];
Kiwh=X\MWh;
Quedando definida la funcin al conocer cada uno de los coeficientes KowhKiwh.

4.5.2 Ecuacin de regresin polinmica


Basado en la experiencia o en la observacin grfica, es posible que los datos sean modelados por una
funcin polinmica. Los coeficientes desconocidos a0, a1, y a2 pueden determinarse mediante mnimos
cuadrados lo cual minimiza la suma de los cuadrados de las desviaciones experimentales de los obtenidos
por el modelo.
y = a

+ a 1t + a 2 t

39

2
y1 1 t1 t1
y 1 t t 2
2 2 2 2 a0
y3 1 t 3 t 3
= 1 t t 2 * a1
y 4 4 4 2 a 2
y5 1 t 5 t 5

y
6 1 t 6 t 6 2

X = [ones(size(t)) t t.^2]
a = X\y
4.6 Estadstica en MATLAB.

Existe un paquete de funciones de estadstica muy fuerte que pueden observarse al consultar la
documentacin estadstica de MATLAB. Las funciones de uso ms frecuente mean [promedio], median
[mediana], range [rango], std [desviacin estandard] y var [varianza] se implementan fcilmente.
Finalmente la interfase grfica disttool posibilita trabajar con las funciones de distribucin ms importantes.
5 MATEMATICA SIMBOLICA.
5.1 Creacin de variables y expresiones simblicas

En matemtica simblica los resultados obtenidos no son numricos sino smbolos que siguen las mismas
convenciones que diaria y normalmente son empleadas en el algebra. Para que MATLAB reconozca las
variables simblicas stas deben primeramente ser declaradas. Para ello se utilizan los comandos sym o
syms.
syms x a b c
(a+b)^2
ans =
(a+b)^2
expand(ans)
ans =
a^2+2*a*b+b^2

Despus de declaradas las variables simblicas a y b, se puede obtener el binomio cuadrado perfecto
resolviendo la factorizacin con expand. El comando factor efecta el proceso inverso. En matemtica
simblica es posible definir funciones y calcular sus derivadas.
40

y = sin(a*x+b)
y=
sin(a*x+b)
dydx=diff(y)

Calcula la derivada respecto a x

dydx =
cos(a*x+b)*a

Si se desea darles valores a los coeficientes, se emplea la funcin subs.


subs(dydx,{a b},{2 pi/2}) Indicndose la sustitucin de los parmetros
a y b por los valores 2 y pi/2.
ans =
-2*sin(2*x)

El comando sym permite construir variables y expresiones simblicas con el objetivo de efectuar operaciones
con ella. Por ejemplo el comando m = sym(sqrt(cosfi^2 + 2*senfi)) declara a m una variable simblica que
representa a una expresin. Ahora es posible efectuar operaciones con esa variable que representa la
expresin.
f = 2*m^2 3*m +1

En general se puede usar sym o syms para crear variables simblicas. Es preferible usar syms ya que
requiere menos escritura. Debe notarse que para declarar una constante como variable simblica, es necesario
utilizar el comando sym. Si se utiliza una variable para representar una expresin simblica, y se vuelve a
aplicar el comando syms a esta variable, MATLAB actualiza y desconoce las variables previamente
declaradas. Por ejemplo:
syms a b
f=a+b
f=
a+b
Si de Nuevo se declara syms f
MATLAB arroja
f=
f
Esto muestra la utilidad de emplear el comando syms para limpiar variables o definiciones previamente
asignadas en una sesin de MATLAB. El comando findsym determina las variables simblicas en una
expresin. Por ejemplo dadas las expresiones simblicas f y g definidas por
syms a b n t x z
41

f = x^n; g = sin(a*t + b);


es posible encontrar las variables simblicas en f entrando:
findsym(f)
ans =
n, x
Similarmente se encuentran las de g:
findsym(g)
ans =
a, b, t
Con el comando subs se le dan valores numricos a una variable simblica. Por ejemplo para sustituir el
valor de x =2 en la expresin simblica
f = 2*x^2 - 3*x + 1 Se entra el comando
subs(f,2)
Que arroja el resultado
f(2): ans =
3
Para sustituir una matriz A en la expresin simblica f, se usa el comando polyvalm(sym2poly(f), A), que
reemplaza x por A y el trmino constante f por la matriz identidad correspondiente. Cuando las expresiones
contienen ms de una variable, se puede especificar que variable es la que se desea sustituir. Por ejemplo:
Para sustituir el valor x = 3 en la expresin simblica syms x y
f = x^2*y + 5*x*sqrt(y)
se introduce el comando subs(f, x, 3)
lo que arroja
ans =
9*y+15*y^(1/2)
De otra parte, para sustituir y = 3, se introduce subs(f, y, 3)
ans =
3*x^2+5*x*3^(1/2)
5.2 Creacin de funciones matemticas simblicas

Existen dos vas para crear funciones: Usar expresiones simblicas o crear un M-File usando expresiones
simblicas. La secuencia de comandos para generar las expresiones simblicas r, t y f. son:
syms x y z
r = sqrt(x^2 + y^2 + z^2)
t = atan(y/x)
f = sin(x*y)/(x*y)
42

Utilizando los comandos diff, int, subs, y otras funciones existentes en la caja de herramientas de
Matemtica Simblica (Symbolic Math Toolbox ) , se pueden manipular tales expresiones. Creando un MFile es posible un uso ms general. Por ejemplo: se desea crear la funcin sinc; sin(x)/x.
Para hacer esto se crea un M-file en el directorio @sym:
function z = sinc(x)
%sinc la funcin simblica sinc
% sin(x)/x. esta funcin acepta sym como el argumento de entrada
if isequal(x,sym(0))
z = 1;
else
z = sin(x)/x;
end
Es posible extender estos ejemplos a funciones de varias variables. Para ello se recomienda solicitar la
ayuda, ver los aspectos de Programming and Data Types en la documentacin en lnea de MATLAB o
para una discusin ms detallada, revisar la programacin orientada por objeto.
Para resolver ecuaciones algebraicas, se utiliza la funcin simblica solve. Por ejemplo para resolver la
ecuacin de segundo grado:
syms x a b c
y=a*x^2+b*x+c
y=
a*x^2+b*x+c
solve(y)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

% Se declaran las variables


%Definicin de la funcin

% Bsqueda de la solucin simblica


% Resultado

Si se desea resolver una ecuacin trascendente como:


e x = x + 1.5
Se utiliza la sintaxis:
sol = solve( 'x+1.5=exp(x)' );]
double(sol)
ans =
-1.1983
0.8577

43

Es posible comprobar el resultado grficamente pero tambin en el ambiente simblico, empleando el


comando ezplot. Intente obtener el siguiente grfico con dicho comando, consulte la ayuda correspondiente.
Para resolver sistemas de ecuaciones se emplea
exp(x)
tambin solve. Supngase que se necesita calcular:
6
5

3 x1 + 2 x 2 = 1

x1 0.3 x 2 = 1

La solucin se obtiene en una sintaxis de dos


cadenas; una para cada ecuacin:

2
1

[x1,x2] = solve ('3*x1+2*x2=1','x1-0.3*x2=-1')


x1 =
-.5862068965
x2 =
1.3793103448
-1
-0.5
0
0.5
1
1.5
x
Para resolver ecuaciones diferenciales ordinarias, se
emplea el comando dsolve. La sintaxis es muy similar a solve, donde se emplean los smbolos Dy ,
D2y etc, para representar las derivadas de primer orden y segundo orden dy/dx, dy2 / dx2
respectivamente. En este ejemplo:

0
-1
-2
-3
-4

d ( y)
= 1+ y2
y(0) = 1 condicin inicial.
dx
La solucin se calcula como:
y= dsolve('Dy=1+y^2','y(0)=1')
y=
tan(t+1/4*pi) Note que la solucin es una funcin .
tan(t+1/4*pi)

Se puede calcular el rea bajo la curva de dicha


funcin; por ejemplo en el intervalo entre
[-2 , 0 ] con la funcin simblica:
int(y,-2,0)
ans =
-1/2*log(1+tan(2)^2)+log(-1-tan(2))
double(ans)
ans =
-0.7069

-2

-4

-6
-6

-4

-2

0
t

44

Otros comandos importantes en Matemtica Simblica son collect, horner, simplify y simple. Analice
los ejemplos mostrados y consulte la ayuda para ms informacin. Para polinomios, collect, reagrupa
todos los coeficientes con la misma potencia de x:
y=(x-1)*(x-1/2)*(x+5);
collect(y)
ans = x^3+7/2*x^2-7*x+5/2
horner(ans) Resuelve segn el esquema de Horner
ans = 5/2+(-7+(7/2+x)*x)*x
Simplify y simple son potentes herramientas algebraicas.
simplify(log(x*y))
ans = log(x*y)

simplify( cos(x)^2+ sin(x)^2);


ans= 1
En Matemtica simblica se puede trabajar con las transformadas de laplace, fourier con las
funciones simblicas correspondientes:
f =exp(-x^2)
fourier(f)
ans = pi^(1/2)*exp(-1/4*w^2)
Compruebe finalmente el empleo la funcin funtool en variable simblica como un calculador de
funciones. Consulte la ayuda.
6.- SIMULINK

Simulink es un software especializado para modelar, simular y analizar sistemas dinmicos lineales o no
lineales. En su ambiente es posible construir modelos propios o simular y modificar modelos existentes
mediante la adicin de nuevos elementos. Las simulaciones son interactivas de modo que permite cambiar
los parmetros y observar que sucede a la vez que brinda acceso a todas las herramientas de anlisis de
MATLAB, para visualizar y analizar los resultados.
Un objetivo de Simulink es dar sentido funcional a la simulacin de modo que, realizando sta, es posible
ver que sucede antes de que un modelo sea llevado a la realidad. Simulink permite sobrepasar los lmites de
la linealizacin y explorar otros modelos ms reales. En resumen, la meta principal es convertir su PC en un
laboratorio para desarrollar ideas que amplen todo tipo de posibilidad.

45

6.1 Creacin de un modelo.

Para crear un modelo simplemente se busca el bloque de inters en cualesquiera de las bibliotecas bsicas del
ambiente Simulink ( Sources, Sinks, Linear, Nonlinear, Discrete, Connections y Blocksets & Toolboxes.
Como indicaciones generales la biblioteca Source define los tipos de estmulo o seales, Sink brinda los
bloques de visualizacin y Connections, los elementos o bloques en las conexiones. Consulte la ayuda para
una descripcin ms detallada de las mismas

Para tomar un bloque de una biblioteca en particular, solo es necesario indicarlo con el botn izquierdo del
mouse y arrastrarlo hacia la ventana del Simulink y liberarlo. As se procede con todos los bloques
necesarios. Otras operaciones con los bloques son:

Conectar bloques entre si: posesionar el cursor sobre el terminal de salida del bloque origen, hacer
click y enlazar con el terminal de entrada correspondiente del bloque destino.

Dibujar una rama: posesionar en la lnea y presionar CTRL.

Mover lnea: marcarla y arrastrarla.

Crear un vrtice en lnea: marcarla y presionar SHIFT.

Ancho de lnea con format.

Etiquetas en lneas: doble click sobre la lnea.

Etiqueta en la ventana: doble click en el lugar de inters.

Seleccionar bloques: click. Si son mltiples, adicionar SHIFT.

Copiar un bloque (duplicarlo). Marcarlo, apretar CTRL y arrastrar.

Cambiar orientacin del bloque: con format ( flip-block y rotate).

Cambiar tamao de bloque: marcar y ampliar esquinas.

Cambiar nombre del bloque: marcar en el nombre y escribir.

Especificar parmetros del bloque: como corresponda segn la ventana del bloque.

46

Como ejercicio dibuje el sistema de la figura: Practique las principales operaciones sobre el sistema descritas
anteriormente. Establezca una seal de amplitud 1 y frecuencia angular 1, continua. Salve el modelo con un
nombre en el directorio de trabajo y ajuste los parmetros de la simulacin en el men <Simulation\
Parameters> en particular el tiempo de simulacin e inicie la simulacin con <Simulation \ Start>. Para ver
los resultados de la simulacin, doble click en el osciloscopio.
6.2 Subsistemas.

El concepto de subsistemas es equivalente al de una subrutina o funcin en lenguajes de programacin. As


cuando se tiene un sistema complejo con muchos componentes es ms conveniente agruparlos en
subsistemas, los cuales simplifican el nmero de bloques en el diagrama de trabajo y se establece as una
jerarqua de niveles pues se pueden crear subsistemas dentro de otros subsistemas. Es posible poner a punto
el programa total ajustando cada uno de sus partes independientemente.
Hay dos formas bsicas de crear subsistemas:

Agrupando los bloques de inters dentro del diagrama de trabajo y crear un subsistema con estos.

Definiendo a priori un subsistema y creando sus componentes dentro del mismo.

El bloque para crear un subsistema se encuentra en la biblioteca < connections>, adems deben de usarse los
bloques <in > <out > dentro de esa misma biblioteca que definen las entradas y salida al bloque del
subsistema.
En el ejemplo anterior, se crear un subsistema con los bloques que actan sobre la seal. Para proceder a
crear el subsistema a partir de bloques ya construidos, basta con agruparlos, marcarlos e ir al men EDIT/
create subsystems el cual es activado al marcar. Abra el subsistema creado y note cmo automticamente se
47

han aadido los puertos <in > <out > que definen la entradas y salidas del subsistema. Para crear el
subsistema a partir de cero, copie el bloque <subsysms> , abra el mismo, copie los componentes necesarios
incluyendo los puertos de entrada y salida.

6.3 Enmascarar un subsistema.

Puede ser conveniente que un determinado subsistema, definido por un conjunto de parmetros, permita
modificarlos sin tener que acceder al interior del mismo. Mediante una mscara el subsistema se representa
por un icono grfico, y al acceder a ste aparece un cuadro de dilogo donde se especifican los parmetros
particulares en la aplicacin. La mayora de los bloques del Simulink en las distintas bibliotecas estn
construidos de esta forma.

En este ejemplo se quiere construir un nuevo bloque que modele a una termo resistencia, de acuerdo a los
parmetros de la ecuacin fundamental de la misma:
r (t ) = r0 (1 * t )

48

Donde ro es la resistencia a la temperatura de referencia, usualmente cero grados y alfa es el coeficiente de


sensibilidad de la termoresistencia, que expresa cuantos Ohms se varan por grado de temperatura.
Si se hace doble click en el bloque en cuestin, no aparece el contenido del bloque sino el cuadro de dilogo
siguiente. En este dilogo aparecen los dos parmetros que definen a la termoresistencia los cuales deben ser
especificados convenientemente. Adicionalmente aparece
una informacin sobre el objetivo del bloque.
A este procedimiento, que sustituye el modelo de un
subsistema, por un bloque con parmetros a variar, se le
denomina enmascarar el bloque.
Para ver como se ha constituido el bloque, marcar en el men
de comandos de <EDIT/ look_under mask> y aparece el
bloque original que ha dado origen a la mscara.

Ntese que hay dos bloques que definen los parmetros en


cuestin, los dos bloques de ganancia denominados ALFA y
RO.
Los pasos para enmascarar un bloque son los siguientes:

Dibujar el bloque

Marcar bloque , activar el editor de mscaras con < EDIT/


edit mask>

Completar el cuadro inicializacin.

Completar el cuadro documentacin.

Completar el cuadro icono.


49

Estos cuadros definen los parmetros del sistema, la ayuda del mismo y la forma del icono grfico que va a
representar el sistema.
En este cuadro se escribe la informacin que va a efectuar la descripcin del bloque en la mscara y la que
brindar una ayuda de como operar el bloque.
En este men se indican los nombres que van a tener las variables asignadas en el texto de la mscara, en este
caso SENSE y ALFA, las cuales se corresponden con las variables
ALFA y R0 del modelo. Defina como tipo de mscara a Simple
Masked Block, adicione o borre las variables con ADD y DELETE
segn se escriban en el mismo. Finalmente con el cuadro de icono,
se procede a dibujar un grfico que represente al bloque, empleando
el comando plot, como se indica en el siguiente cuadro de dilogo.

6.4 Otros bloques de inters

Los bloques de la biblioteca Sources, definen un conjunto de seales de entrada de formas distintas. Note
cmo las seales pueden partir del ambiente MATLAB mediante un file name.mat que archive las
variables de inters o directamente del workspace.

Los bloques de la biblioteca Sink, definen como se van a mostrar las salidas de las seales. Adems del
osciloscopio y el graficador, las seales se pueden enviar hacia un file.mat o hacia el rea de trabajo.

50

En los bloques de las bibliotecas Block Sets y Toolboxes aparecen un conjunto de aplicaciones
especficas de Simulink tales como comunicaciones, lgica difusa, procesamiento digital de seales etc.
Cada nueva versin del MATLAB incorpora nuevas aplicaciones en estos campos.

Consulte la ayuda, la documentacin grfica y los demos del MATLAB y Simulink para ms
informacin.

51

También podría gustarte