Está en la página 1de 113

TUTORIAL DE MATLAB

M. en C. Erika Vilches

Toda

lnea que comience con

>>
es utilizada para denotar la lnea de comando de Matlab, donde se
insertan los comando.
Casi

todos los comandos bsicos de Matlab giran en torno al uso


de vectores.

VECTORES
Un

vector se define poniendo una secuencia de nmeros dentro


de corchetes.
>> v = [3 1]
v =
3

Esto
El

crea un nuevo vector que tiene la etiqueta v

primer elemento del vector es un 3 y el segundo un 1

Matlab

imprime una copia del vector despus del enter

Si

se desea suprimir el resultado, poner un punto y coma al final


de la lnea

>> v = [3 1];
>>

Si

se desea ver un vector, escribir el nombre de su etiqueta:

>> v
v =
3

De

esta forma, se puede definir un vector de cualquier tamao.

>> v = [3 1 7 -21 5 6]
v =
3

Note

-21

que esto produce un vector en forma de fila

Si

se desea crear un vector en forma de columna, se necesita


utilizar la transpuesta de un vector de fila.

Una transpuesta se define utilizando un apstrofe

>> v = [3 1 7 -21 5 6]'


v =
3
1
7
-21
5
6

Crear

un vector con una secuencia de nmeros con un


incremento comn Utilizar dos puntos :
>> v = [1:8]
v =
1

Para

utilizar un incremento distinto a uno, definir el nmero de


inicio, el valor del incremento y el ltimo nmero.

>> v = [2:.25:4]
v =
Columns 1 through 7
2.0000
2.2500
3.2500
3.5000
Columns 8 through 9
3.7500

4.0000

2.5000

2.7500

3.0000

Acceder

elementos individuales en un vector:

>> v(1)
ans =
2

Este
Se

comando imprime el elemento 1 del vector.

ha creado la nueva variable ans

Siempre que se lleva a cabo una accion que no incluye una


asignacin, Matlab pondr la etiqueta ans en el resultado.

Matlab

lleva un registro del ltimo resultado

Ej: Una

vez que se cre la variable ans, si quisiramos ver una


transpuesta del resultado:

>> [0:2:8]
ans =
0
>> ans'
ans =
0
2
4
6
8

Matlab

permite ver partes especficas del vector.

>> v = [0:2:8]
v =
0
>> v(1:3)
ans =
0

0
4

Se puede utilizar la misma notacin que para


crear el vector
2

>> v(1:2:4)'
ans =

Una

vez dominada la notacin, podemos realizar otras


operaciones:
>> v(1:3)-v(2:4)
ans =
-2

En

-2

-2

su mayora, Matlab utiliza la notacin estndar utilizada en


lgebra lineal.

Ejemplo: Definir

un nuevo vector con los nmeros de 0 a -4 en

pasos de -1.
>> u = [0:-1:-4]
u =
0

Sumar

-1

-2

-3

-4

u con v del modo estndar:

>> u+v
ans =
0

La

multiplicacin y divisin escalar se definen del modo estndar.

>> -2*u
ans =
0

>> v/3
ans =
0

0.6667

1.3333

2.0000

2.6667

Con

estas definiciones las combinaciones lineales de vectores


pueden ser definidas fcilmente y las operaciones bsicas
combinadas.
Nota: Ojo

con la precedencia de operadores.

>> -2*u+v/3
ans =
0

2.6667

5.3333

8.0000

10.6667

Estas

operaciones solamente pueden ser llevadas a cabo cuando


las dimensiones de los vectores lo permitan.

Ejemplo: Sumar

dos vectores cuyas dimensiones son diferentes:

>> u+v'
??? Error using ==> plus
Matrix dimensions must agree.

MATRICES
Definir

una matriz es similar a definir un vector.

Para

definir una matriz, se le puede tratar como una columna de


vectores de fila:
>> A = [ 1 2 3; 3 4 5; 6 7 8]
A =
1
3
6

2
4
7

3
5
8

Tambin

se le puede tratar como una fila de vectores de columna


(Es importante incluir los espacios):

>> B = [ [1 2 3]' [2 4 7]' [3 5 8]']


B =
1
2
3

2
4
7

3
5
8

Si

pierde la nocin de qu variables ha definido, el comando whos


le permitir conocer todas las variables que tiene en su
workspace.

>> whos
Name

Size

A
B
ans
u
v

3x3
3x3
1x5
1x5
1x5

Bytes
72
72
40
40
40

Class
double
double
double
double
double

Attributes

La

multiplicacin matriz-vector puede hacerse facilmente.

Es

importante tener en cuidado de que las matrices y vectores


tengan en tamao adecuado.

>> v = [0:2:8]
v =
0

>> A*v(1:3)
??? Error using ==> *
Inner matrix dimensions must agree.
>> A*v(1:3)'
ans =
16
28
46

Es

posible trabajar con diferentes partes de una matriz, del mismo


modo que es posible hacerlo con vectores.
>> A(1:2,3:4)
??? Index exceeds matrix dimensions.
>> A(1:2,2:3)
ans =
2
4

3
5

>> A(1:2,2:3)'
ans =
2
3

4
5

FUNCIONES DE MATRICES
Una

vez que pueda crear y manipular matrices, puede llevar a


cabo muchas operaciones estndar sobre ellas.
Ej: Encontrar

el inverso de una matriz

>> inv(A)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND =
3.469447e-18.
ans =
1.0e+15 *
-2.7022
5.4043
-2.7022

4.5036
-9.0072
4.5036

-1.8014
3.6029
-1.8014

Matlab

es case sensitive.

>> inv(a)
??? Undefined function or variable a.

Otras

posibles operaciones incluyen encontrar una aproximacin


de los eigen valores de una matriz. Hay dos versiones de esta
rutina:
Una
La

slo encuentra los eigen valores

otra encuentra ambos, los eigen valores y los eigen vectores

Si

olvida cual es cual, puede obtener ms informacin


escribiendo help eig en el prompt

Para obtener informacin de cualquier funcin: help nom_func

>> eig(A)
ans =
14.0664
-1.0664
0.0000
>> [v,e] = eig(A)
v =
-0.2656
-0.4912
-0.8295

0.7444
0.1907
-0.6399

-0.4082
0.8165
-0.4082

0
-1.0664
0

0
0
0.0000

e =
14.0664
0
0

Ej: Obteniendo

>> diag(A)
ans =
1
4
8

la diagonal de una matriz:

Para

limpiar todos los datos y comenzar de nuevo, utilizar el


comando clear.
Nota: No

pregunta si tienes una segunda opinin y sus


resultados son FINALES.

>> clear
>> whos

FUNCIONES DE VECTORES

Sumas

y restas de vectores.

Ej: Definiremos

dos vectores y los sumaremos y restaremos.

Definiendo

los dos vectores:

>> v = [1 2 3]'
v =
1
2
3
>> b = [2 4 6]'
b =
2
4
6

Sumndolos

>> v+b
ans =
3
6
9
>> v-b
ans =
-1
-2
-3

y restndolos:

Las

multiplicaciones y sumas de vectores y matrices deben seguir


reglas estrictas.
Ej: No

es posible sumar un vector de fila a un vector de


columna.

Ej: En

una multiplicacin el nmero de columnas de la matriz a


la izquierda debe ser igual al numero de filas de la matriz de la
derecha.

>> v*b
??? Error using ==> *
Inner matrix dimensions must agree.
>> v*b'
ans =
2
4
6
>> v'*b
ans =
28

4
8
12

6
12
18

Matlab

permite hacer operaciones a cada elemento de una

matriz.
Ej: Multiplicar

cada elemento en el vector v con su


correspondiente entrada en el vector b Utilizar el smbolo
.*

Es posible colocar un punto delante de cada smbolo


matemtico para indicarle a Matlab que se desea que la
operacin se haga en cada entrada del vector.

>> v.*b
ans =
2
8
18
>> v./b
ans =
0.5000
0.5000
0.5000

Si

se pasa un vector a una funcin matemtica predefinida,


regresar un vector del mismo tamao, donde cada entrada es
encontrada realizando la operacin especificada en la entrada
correspondiente del vector original.
>> sin(v)
ans =
0.8415
0.9093
0.1411
>> log(v)
ans =
0
0.6931
1.0986

Ej: Podemos

definir y manipular vectores de gran tamao del


mismo modo que hemos trabajado vectores pequeos.
>> x = [0:0.1:100]
x =
Columns 1 through 7
0
0.5000

0.1000
0.6000

0.2000

0.3000

0.4000

99.7000

99.8000

[stuff deleted]
Columns 995 through 1001
99.4000
99.5000
99.9000 100.0000

99.6000

>> y = sin(x).*x./(1+cos(x));

travs de esta misma simple manipulacin de vectores, Matlab


permite graficar los resultados.

>> plot(x,y)

travs de esta misma simple manipulacin de vectores, Matlab


permite graficar los resultados.

>> plot(x,y,'rx')

Para

conocer ms de la funcin plot: help plot

>> 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
g
r
c
m
y
k

blue
green
red
cyan
magenta
yellow
black

.
o
x
+
*
s
d

point
circle
x-mark
plus
star
square
diamond

:
-.
--

solid
dotted
dashdot
dashed

v
^
<
>
p
h

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
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.
Overloaded methods
help idmodel/plot.m
help iddata/plot.m

>> plot(x,y,'y',x,y,'go')

>> plot(x,y,'y',x,y,'go',x,exp(x+1),'m--')

Crear

una matriz cuadrada de 5x5 de ceros:

>> a = zeros(5)
a =
0
0
0
0
0

Crear

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

una matriz de ceros de 2x3:

>> a = zeros(2, 3)
a =
0
0

0
0

0
0

0
0
0
0
0

CICLOS
Nos

permiten repetir ciertos comandos

Todas

las estructuras de ciclos en Matlab se inician con palabras


clave como for o while y terminan con la palabra end

Ciclos
Para

for:

indicar a Matlab cuando iniciar y cuando parar, se da un


vector en el enunciado for y Matlab recorrer cada valor en el
vector

Ej: Un

ciclo simple se ejecutar cuatro veces, cambiando cada vez


una variable j en el ciclo.
>> for j=1:4,
j
end
j =
1
j =
2
j =
3
j =
4

Cuando
j

Matlab lee el enunciado for construye un vector, [1:4]

toma cada valor dentro del vector, en orden

Cada

vuelta, el enunciado for actualizar el valor de j y repetir los


enunciados que se encuentren dentro del ciclo.

Ej: Definiendo

un vector y cambiando su contenido


posteriormente.
>> v = [1:3:10]
v =
1

10

>> for j=1:4,


v(j) = j;
end
>> v
v =
1

Ej: Realizar

operaciones en las filas de una matriz. Iniciar en la


segunda fila de la matriz y substraer la fila previa de la matriz y
repetir esta operacin en las siguientes filas.
>> A = [ [1 2 3]' [3 2 1]' [2 1 3]']
A =
1
2
3
>> B = A;

3
2
1

2
1
3

>> for j=2:3,


A(j,:) = A(j,:) - A(j-1,:)
end
A =
1
1
3

3
-1
1

2
-1
3

1
1
2

3
-1
2

2
-1
4

A =

Ciclo

while:

Repite

una secuencia de comandos mientras una condicin se


cumpla.

>> n = 1
n =
1
>> while n < 3
n = n+1
end
n =
2
n =
3

PLOTTEANDO EN MATLAB
El

comando plot es utilizado para generar plots en Matlab

Acepta

una gran variedad de argumentos

Ej: Si

solo queremos un plot, le damos el rango, el dominio y el


formato

>> plot(x,y,'go')

Si

queremos plottear mas de una grfica en una sola imgen


utilizamos el comando subplot.
Matlab

tratara a la ventana como un arreglo de plots.

Ej: Una
>>
>>
>>
>>

ventana con una fila y dos columnas, dndonos 2 plots.

subplot(1,2,1);
plot(x,y,'go',x,true)
subplot(1,2,2);
plot(x,abs(true-y),'mx')

El

comando clf nos permite limpiar completamente la figura


actual.

Para

darle un ttulo a nuestro plot, utilizamos la funcin title.

Para

darle una etiqueta al eje x utilizamos la funcin xlabel.

Para

darle una etiqueta al eje y utilizamos la funcin ylabel.

Ej:
plot(x1,y1,'go',x1,true1)
plot(x1,abs(true1-y1),'mx')
subplot(1,2,1);
plot(x,abs(true-y),'mx')
subplot(1,2,2);
plot(x1,abs(true1-y1),'mx')
title('Errors for h=1/32')
xlabel('x');
ylabel('|Error|');
subplot(1,2,1);
xlabel('x');
ylabel('|Error|');
title('Errors for h=1/16')

Para

imprimir un archivo postscript del plot actual se utiliza el


comando print.
Ej: Crear

un archivo postscript llamado error.ps que resida en el


directorio actual

print -dps error.ps

Si

pasamos error.ps a PDF, vemos lo siguiente:

ARCHIVOS EJECUTABLES
Primero, necesitamos
El

crear un archivo.

mejor editor es utilizar el editor integrado de Matlab.

Permite hacer manipulaciones sencillas del archivo

Editor muy simple y fcil de iniciar.

No es un editor muy avanzado.

Los

archivos ejecutables de Matlab tienen la extensin *.m

En

este ejemplo crearemos el archivo rectangle_area.m

continuacin, Matlab buscara en el directorio actual por el


archivo rectangle_area, leera el archivo y ejecutar los
comandos en l

Si

Matlab no puede encontrar el archivo, lanzar el mensaje de


error: ??? Undefined function or variable 'rectangle_area'

En este caso, se escribi mal el nombre del programa, el


nombre del programa es erroneo o el archivo se encuentra
en un directorio que Matlab no conoce
En

el ltimo caso, se debe indicar a Matlab en qu


directorio buscar

La

lista de directorios en los que se buscan archivos se


llama path

Para

desplegar el path de bsqueda, escribir path

>> path













MATLABPATH

/Applications/MATLAB74/toolbox/matlab/general
/Applications/MATLAB74/toolbox/matlab/ops
/Applications/MATLAB74/toolbox/matlab/lang
/Applications/MATLAB74/toolbox/matlab/elmat
/Applications/MATLAB74/toolbox/matlab/elfun
/Applications/MATLAB74/toolbox/matlab/specfun
/Applications/MATLAB74/toolbox/matlab/matfun
/Applications/MATLAB74/toolbox/matlab/datafun
/Applications/MATLAB74/toolbox/matlab/polyfun
/Applications/MATLAB74/toolbox/matlab/funfun
/Applications/MATLAB74/toolbox/matlab/sparfun
/Applications/MATLAB74/toolbox/matlab/scribe
/Applications/MATLAB74/toolbox/matlab/graph2d
... etc

Para

agregar un nuevo directorio al path de bsqueda en


plataformas Windows:
path(path,'c:\documents and settings\erika\desktop')

Para

agregar un nuevo directorio al path de bsqueda en


plataformas UNIX:
path(path,'/Users/erika/Desktop')

Para

remover directorios del path de bsqueda utilizamos la


funcin rmpath:
rmpath('/Users/erika/Desktop')

Para

utilizar el editor de Matlab para crear el archivo, escribir:

>> edit rectangle_area.m

Matlab nos preguntara si deseamos crear el archivo, a lo que


indicaremos que si:

Una

vez que el editor aparezca en la pantalla, typear lo siguiente:

% file: rectangle_area.m
% This matlab file will find the area of a rectangle
%
% A = b * h
%
%
% To run this file you will first need to specify
% the following:
%
b
: the base size
%
h
: the height size
%
% The routine will mutiply the given base times the
% heigth and will store the area of the rectangle in A.
%
% If you haven't guessed, you can use the percent sign
% to add comments =).
%

A = b * h;

Salvar

el archivo e ir a la ventana de comandos y mandar llamar el


archivo escribiendo el nombre del mismo:
>> rectangle_area

En

este momento, deberemos obtener el siguiente error:

>> rectangle_area
??? Undefined function or variable 'b'.
Error in ==> rectangle_area at 20
A = b * h;

Si

se trata de llamar el archivo sin haber definido primero las


variables b y h, se obtendr un mensaje de error.

Es

importante antes de mandar llamar el archivo, definir todas las


variables que no estn definidas dentro del mismo.

>>
>>
>>
>>

b = 5;
h = 4;
rectangle_area
who

Your variables are:


A

>> whos
Name
A
b
h

Size
1x1
1x1
1x1

>> A
A =
20

Bytes
8
8
8

Class
double
double
double

Attributes

Una

vez que las variables necesarias se han definido, se puede


typear el comando rectangle_area
Matlab

buscara en el directorio actual por un archivo llamado


rectangle_area.m

Una

vez que encuentre el archivo, lo lee y ejecuta los


comandos como si hubieran sido escritos desde el teclado.

SUBRUTINAS EN MATLAB

En

ocasiones, se desea repetir una secuencia de comandos pero


se desea poder hacerlo con distintos vectores y matrices.

Una

forma de poder hacerlo es utilizando subrutinas.

Las

subrutinas son como los archivos ejecutables pero se le


pueden pasar distintos vectores y matrices a utilizar.

function [A] = rectangle_area(b, h)


% file: rectangle_area.m
% This matlab file will find the area of a rectangle
%
% A = b * h
%
%
% To run this file you will first need to specify
% the following:
%
b
: the base size
%
h
: the height size
%
% The routine will mutiply the given base times the
heigth
% and will return the area of the rectangle.
%
% ex: [A] = rectangle_area(5, 4)
A = b * h;
end

Para

mandar llamar la subrutina:

>> A = rectangle_area(5,4)
A =
20
>> rectangle_area(5,4)
ans =
20

Si

deseamos devolver ms de un resultado, podemos hacerlo


indicando la lista de resultados a devolver de la siguiente forma:

function [A, V] = rectangle_area_volume(b, h, a)


A = b * h;
V = A * a;
end

De

este modo, podemos mandar llamar nuestra funcin


devolviendo solamente un resultado (el rea en este ejemplo) o
ambos (tanto el rea como el volumen)
>> A = rectangle_area_volume(5,8,3)
A =
40
>> [A, V] = rectangle_area_volume(5,8,3)
A =
40

V =
120

Cuando

se colocan comentarios en la segunda lnea, actan como


help file
>> help rectangle_area
file: rectangle_area.m
This matlab file will find the area of a rectangle
A =

b * h

To run this file you will first need to specify


the following:
b
: the base size
h
: the height size
The routine will mutiply the given base times the
heigth and will return the area of the rectangle.
ex: [A] = rectangle_area(5, 4)

EL ENUNCIADO IF
En

algunas ocasiones queremos que ciertas partes de nuestro


programa sean ejecutadas nicamente bajo ciertas circunstancias

La

forma de hacer esto es utilizar un enunciado if, cuya estructura


bsica vemos a continuacin:
if
end

(condition statement)
(matlab commands)

Una

if

estructura condicional mas complicada:

(condition statement)
(matlab commands)
elseif (condition statement)
(matlab commands)
elseif (condition statement)
(matlab commands)
.
.
.
else
(matlab commands)
end

Las

condiciones son enunciados booleanos y se pueden hacer


comparaciones estndar.

Las

comparaciones vlidas incluyen:

<

- Menor que

>

- Mayor que

<=

- Menor igual que

>=

- Mayor igual que

==

- Igual

- No es igual

Ej: Hacer

que la variable j sea igual a -1 si a es menor que b

>> a = 2;
>> b = 3;
>> if a<b
j = -1;
end

Ej: Hacer

que la variable j sea igual a -1 si a es menor que b y 2 si


es mayor que b
>> a = 4;
>> b = 3;
>> if (a<b)
j = -1;
elseif (a>b)
j = 2;
end

Ej: Hacer

que la variable j sea igual a 3 si no se cumple ninguna


condicin
>> a = 4;
>> b = 4;
>> f (a<b)
j = -1;
elseif (a>b)
j = 2;
else
j = 3
end

Se

pueden comprobar mltiples expresiones booleanas utilizando


los operadores estndar "&" (and), (or) y (not).
if (a < b) & (b >= c)
Matlab commands
end

ARCHIVOS

Conforme

se trabaja en una sesin, se generan matrices y

vectores
El

comando utilizado para guardar TODOS los datos de una


sesin es save.

El

comando utilizado para traer el conjunto de datos guardado en


un archivo a la sesin es load.

Ej: Guardar

todos los datos presentes en la sesin en un archivo


llamado todo.mat (*.mat es la extensin para los datos Matlab)
>> u = [1 3 -4];
>> v = [2 -1 7];
>> whos
Name
Size
u
v

1x3
1x3

Bytes
24
24

Class

Attributes

double
double

>> save todo.mat


>> ls
todo.mat

es el comando para listar todos los archivos en el directorio


actual.

ls

En

este caso hemos creado el archivo todo.mat que contiene a los


vectores u y v.

Ej: Los

datos pueden ser cargados de nuevo en Matlab con el


comando load.

>> clear
>> whos
>> load todo.mat
>> whos
Name
Size
u
v

Bytes

1x3
1x3

24
24

Class

Attributes

double
double

>> u + v
ans =
3

En

este ejemplo, el espacio de datos es limpiado de todas las


variables. El contenido de todo el archivo todo.mat es
posteriormente cargado a memoria.

No

es necesario cargar el total del contenido de un archivo a la


memoria.

Despus

de que se especifica el nombre del archivo es posible


listar las variables que se desea cargar separadas por espacios

Ej: Solamente

cargar la variable u en la memoria.

>> clear
>> whos
>> load todo.mat u
>> whos
Name
Size
u

1x3

24

>> u
u =
1

Bytes

-4

Class
double

Attributes

El

comando save funciona exctamente de la misma forma

Si

solamente se desea guardar un par de variables, se enlistan


dichas variables despus del nombre del archivo separadas por
espacios

Para

conocer ms informacin sobre save, escribir help save

Hay

varias opciones para formato del archivo, etc.

Matlab

permite guardar los datos generados en una sesin


utilizando el comando diary.
No

quedan guardados para poder ser ejecutados como un


archivo ejecutable

Es
El

til para entregar tareas o para tomar notas.

diario de una sesin:

Es

iniciado con el comando diary seguido del nombre del


archivo en donde se guardara el texto.

Seguido
Al

de todos los comandos que formarn el diario

finalizar, escribir el comando diary solo, lo que escribir una


copia exacta de la sesin en el archivo y lo cerrar.

Ej: Generar

un diario en el archivo diario.txt

>> diary diario.txt


>> a = [1 2 3]
a =
1

>> b = [4 5 6]
b =
4

>> a + b
ans =
5
>> diary

El

contenido del archivo diario.txt es el siguiente:

DOCUMENTACIN
Para

ver la ayuda de las funciones disponibles en Matlab de un


modo ms visual que el texto plano que ofrece la funcin help
utilizamos la funcin:
>> doc nombre_de_la_funcion

Lo

que nos despliega una ventana con la informacin que


solicitamos como la que podemos ver en la siguiente diapositiva.

EJERCICIO

Realice

un programa en Matlab que


le permita conocer las races de una
ecuacin de segundo grado.

Dispone

de 30 minutos.

Solucin:
function [x1, x2] = raices (a, b, c)
x1 = (-b+sqrt((b^2)-4*a*c))/(2*a);
x2 = (-b-sqrt((b^2)-4*a*c))/(2*a);
end

Corriendo

el programa:

>> [x1, x2] = raices(1,3,1)


x1 =
-0.3820

x2 =
-2.6180

Si

nuestro cdigo tuviera una indentacin incorrecta y queremos


que Matlab la corrija por nosotros:
Seleccionamos

Click

el cdigo a corregir

derecho Smart Indent

Nuestro

cdigo queda correctamente indentado.

Si

queremos conocer el nmero de argumentos que nos envi el


usuario, utilizamos la funcin nargin

Si

queremos conocer el nmero de resultados que espera


obtener el usuario, utilizamos la funcin nargout

Para

enviar un mensaje de error y terminar el programa,


utilizamos la funcin error

Ej: Validar

que el usuario nos haya enviado 3 argumentos y


terminar el programa en caso contrario
function [x1, x2] = raices (a, b, c)
if nargin ~= 3
error ('Faltan datos')
end
x1 = (-b+sqrt((b^2)-4*a*c))/(2*a);
x2 = (-b-sqrt((b^2)-4*a*c))/(2*a);
end

Si

mandamos llamar el programa con un nmero distinto de


argumentos, el programa mostrar el mensaje de error y
terminar.

>> [x1, x2] = raices(1,3)


??? Error using ==> raices at 3
Faltan datos

Si

deseamos desplegar un mensaje durante la ejecucin de


nuestro programa, utilizamos la funcin disp

Ej: Indicar

si las raices resultantes son reales o complejas

function [x1, x2] = raices (a, b, c)


if nargin ~= 3
error ('Faltan datos')
end
x1 = (-b+sqrt((b^2)-4*a*c))/(2*a);
x2 = (-b-sqrt((b^2)-4*a*c))/(2*a);
if isreal(x1)
disp('Raices reales')
else
disp('Raices complejas')
end
end

Al

ejecutar nuestro programa, nos indica el tipo de raices en un


mensaje

>> [x1, x2] = raices(1,3,1)


Raices reales

>> [x1, x2] = raices(1,3,6)


Raices complejas

x1 =

x1 =

-0.3820

x2 =
-2.6180

-1.5000 + 1.9365i

x2 =
-1.5000 - 1.9365i

Para

limpiar de comandos nuestra ventana Command Window,


utilizamos la funcin clc

DEBUGGER
Para

utilizar el debugger, debemos colocar breakpoints

Click

en la raya ubicada a la izquerda de la lnea donde quiero


colocar mi breakpoint

Si

tengo ediciones sin guardar, el breakpoint se ver gris, al


momento de guardar el archivo, se ver rojo.

Para

iniciar el debugger, ir a la ventana Command Window y


correr la funcin, en este caso:

Esto

nos llevar automticamente a la ventana del editor y


detendr la ejecucin en el breakpoint.

Para

controlar la ejecucin de nuestro programa, utilizamos los


botones Set/clear breakpoint, Clear breakpoints in all files,
Step, Step in, Step out, Continue y Exit debug mode

Para

colocar breakpoints condicionales

Dar

click derecho sobre la lnea en la que se coloca el


breakpoint y seleccionar Set conditional breakpoint

Indicar
Correr

la condicin y presionar el botn OK

el programa desde el Command Window, la ejecucin


se detendr justo en el punto indicado, cuando la condicin
indicada se haya cumplido.

Para

evaluar un rea especfica de nuestro cdigo en lugar de


evaluar todo nuestro programa
Seleccionar
Click
Los

el rea que se desea evaluar

derecho, seleccionar Evaluate Selection

resultados aparecern en el Command Window

TIPOS DE DATOS
Enteros
Strings
Booleanos
Celdas
Estructuras
Variables
Objetos

Simblicas

Conversiones

entre tipos de datos:

GENERACIN DE REPORTES

Una

vez que terminamos nuestro programa, en ocasiones


deseamos generar un reporte del mismo ya sea en HTML, Word,
PPT, LaTeX, etc...

Matlab

provee ayuda para realizar este tipo de reportes.

El

script sobre el que queremos hacer nuestro reporte:

clc, clear all


a = 1;
b = 2;
c = 2;
x1 = (-b+sqrt((b^2)-4*a*c))/(2*a);
x2 = (-b-sqrt((b^2)-4*a*c))/(2*a);
if isreal(x1)
disp('Raices reales')
else
disp('Raices complejas')
end

Ir

al men Cell dar click en Enable Cell Mode

Para

colocar el ttulo utilizar %% lo que automticamente


cambia el color de fondo identificando la celda

Posteriormente, con % indicamos

Para

la descripcin.

crear otra celda %%

Colocaremos

este script.

de este modo la descripcin de cada etapa de

Una

vez que ya escribimos todas las descripciones, dar click en la


flecha que aparece al lado del icono
lo que nos lleva al
editor de configuracin de las publicaciones.
Ah

encontramos los distintos formatos de salida y


caractersticas de ellos.

Al

momento de realizar la publicacin hace correr el script


tambin. Ej: Publicacin en HTML

Para

el caso de HTML, si se desea utilizar:

Negritas
Italicas

Colocar el texto entre asteriscos *texto*

Colocar el texto entre guiones bajos _texto_

Para

insertar una
ecuacin
Click

derecho

Insert Text

Markup
Tex

Equation

Nos

despliega una ecuacin default

Para

conocer las opciones que tenemos para editar las


ecuaciones Tex:
En

la documentacin escribir text properties

Seleccionar
Bajar

la segunda opcin

hasta encontrar las opciones para Tex

Generando

el cdigo LaTeX para la publicacin:

>> syms a b c x
>> ec = a * (x^2) + b * x + c;
>> raices = solve(ec)
raices =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a

>> latex(raices(1))
ans =
-1/2\,{\frac {b-\sqrt {{b}^{2}-4\,ac}}{a}}
>> latex(raices(2))
ans =
-1/2\,{\frac {b+\sqrt {{b}^{2}-4\,ac}}{a}}

Copiando

los resultados de las frmulas en LaTeX en el lugar


donde se coloca la ecuacin en nuestro script nos queda:

Al

publicar, las frmulas se ven as:

Asimismo, podemos

elegir publicar nuestro reporte en LaTeX, lo


que nos devuelve lo siguiente:

... etc

También podría gustarte