Anda di halaman 1dari 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 dene poniendo una secuencia de nmeros dentro
de corchetes.
!
Esto crea un nuevo vector que tiene la etiqueta v
!
El primer elemento del vector es un 3 y el segundo un 1
>> v = [3 1]
v =
3 1
!
Matlab imprime una copia del vector despus del enter
!
Si se desea suprimir el resultado, poner un punto y coma al nal
de la lnea
!
Si se desea ver un vector, escribir el nombre de su etiqueta:
>> v = [3 1];
>>
>> v
v =
3 1
!
De esta forma, se puede denir un vector de cualquier tamao.
!
Note que esto produce un vector en forma de la
!
Si se desea crear un vector en forma de columna, se necesita
utilizar la transpuesta de un vector de la.
!
Una transpuesta se dene utilizando un apstrofe

>> v = [3 1 7 -21 5 6]
v =
3 1 7 -21 5 6
>> 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 :
!
Para utilizar un incremento distinto a uno, denir el nmero de
inicio, el valor del incremento y el ltimo nmero.
>> v = [1:8]
v =
1 2 3 4 5 6 7 8
>> v = [2:.25:4]
v =
Columns 1 through 7
2.0000 2.2500 2.5000 2.7500 3.0000
3.2500 3.5000
Columns 8 through 9
3.7500 4.0000
!
Acceder elementos individuales en un vector:
!
Este comando imprime el elemento 1 del vector.
!
Se 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.
>> v(1)
ans =
2
!
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 2 4 6 8
>> ans'
ans =
0
2
4
6
8
!
Matlab permite ver partes especcas del vector.
>> v = [0:2:8]
v =
0 2 4 6 8
>> v(1:3)
ans =
0 2 4
>> v(1:2:4)'
ans =
0
4
# Se puede utilizar la misma notacin que para
crear el vector
!
Una vez dominada la notacin, podemos realizar otras
operaciones:
!
En su mayora, Matlab utiliza la notacin estndar utilizada en
lgebra lineal.
>> v(1:3)-v(2:4)
ans =
-2 -2 -2
!
Ejemplo: Denir un nuevo vector con los nmeros de 0 a -4 en
pasos de -1.
!
Sumar u con v del modo estndar:
>> u = [0:-1:-4]
u =
0 -1 -2 -3 -4
>> u+v
ans =
0 1 2 3 4
!
La multiplicacin y divisin escalar se denen del modo estndar.
>> -2*u
ans =
0 2 4 6 8
>> v/3
ans =
0 0.6667 1.3333 2.0000 2.6667
!
Con estas deniciones las combinaciones lineales de vectores
pueden ser denidas 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
!
Denir una matriz es similar a denir un vector.
!
Para denir una matriz, se le puede tratar como una columna de
vectores de la:
>> A = [ 1 2 3; 3 4 5; 6 7 8]
A =
1 2 3
3 4 5
6 7 8
!
Tambin se le puede tratar como una la 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 5
3 7 8
!
Si pierde la nocin de qu variables ha denido, el comando whos
le permitir conocer todas las variables que tiene en su
workspace.
>> whos
Name Size Bytes Class Attributes
A 3x3 72 double
B 3x3 72 double
ans 1x5 40 double
u 1x5 40 double
v 1x5 40 double
!
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 2 4 6 8
>> 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 3
4 5
>> A(1:2,2:3)'
ans =
2 4
3 5
!
Una vez que pueda crear y manipular matrices, puede llevar a
cabo muchas operaciones estndar sobre ellas.
!
Ej: Encontrar el inverso de una matriz
FUNCIONES DE MATRICES
>> 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 4.5036 -1.8014
5.4043 -9.0072 3.6029
-2.7022 4.5036 -1.8014
!
Matlab es case sensitive.
!
Otras posibles operaciones incluyen encontrar una aproximacin
de los eigen valores de una matriz. Hay dos versiones de esta
rutina:
!
Una slo encuentra los eigen valores
!
La 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
>> inv(a)
??? Undefined function or variable a.
>> eig(A)
ans =
14.0664
-1.0664
0.0000
>> [v,e] = eig(A)
v =
-0.2656 0.7444 -0.4082
-0.4912 0.1907 0.8165
-0.8295 -0.6399 -0.4082
e =
14.0664 0 0
0 -1.0664 0
0 0 0.0000
!
Ej: Obteniendo la diagonal de una matriz:
>> diag(A)
ans =
1
4
8
!
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
!
Sumas y restas de vectores.
!
Ej: Deniremos dos vectores y los sumaremos y restaremos.
FUNCIONES DE VECTORES
!
Deniendo los dos vectores:
>> v = [1 2 3]'
v =
1
2
3
>> b = [2 4 6]'
b =
2
4
6
!
Sumndolos y restndolos:
>> v+b
ans =
3
6
9
>> v-b
ans =
-1
-2
-3
!
Las multiplicaciones y sumas de vectores y matrices deben seguir
reglas estrictas.
!
Ej: No es posible sumar un vector de la 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 las de la matriz de la
derecha.
>> v*b
??? Error using ==> *
Inner matrix dimensions must agree.
>> v*b'
ans =
2 4 6
4 8 12
6 12 18
>> v'*b
ans =
28
!
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 predenida,
regresar un vector del mismo tamao, donde cada entrada es
encontrada realizando la operacin especicada 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 denir 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.1000 0.2000 0.3000 0.4000
0.5000 0.6000
[stuff deleted]
Columns 995 through 1001
99.4000 99.5000 99.6000 99.7000 99.8000
99.9000 100.0000
>> y = sin(x).*x./(1+cos(x));
!
A travs de esta misma simple manipulacin de vectores, Matlab
permite gracar los resultados.
>> plot(x,y)
!
A travs de esta misma simple manipulacin de vectores, Matlab
permite gracar 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 blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h 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:
!
Crear una matriz de ceros de 2x3:
>> a = zeros(2, 3)
a =
0 0 0
0 0 0
>> a = zeros(5)
a =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
!
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 for:
!
Para indicar a Matlab cuando iniciar y cuando parar, se da un
vector en el enunciado for y Matlab recorrer cada valor en el
vector
CICLOS
!
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 Matlab lee el enunciado for construye un vector, [1:4]
!
j 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: Deniendo un vector y cambiando su contenido
posteriormente.
>> v = [1:3:10]
v =
1 4 7 10
>> for j=1:4,
v(j) = j;
end
>> v
v =
1 2 3 4
!
Ej: Realizar operaciones en las las de una matriz. Iniciar en la
segunda la de la matriz y substraer la la previa de la matriz y
repetir esta operacin en las siguientes las.
>> A = [ [1 2 3]' [3 2 1]' [2 1 3]']
A =
1 3 2
2 2 1
3 1 3
>> B = A;
>> for j=2:3,
A(j,:) = A(j,:) - A(j-1,:)
end
A =
1 3 2
1 -1 -1
3 1 3
A =
1 3 2
1 -1 -1
2 2 4
!
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
!
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
!
Si queremos plottear mas de una grca en una sola imgen
utilizamos el comando subplot.
!
Matlab tratara a la ventana como un arreglo de plots.
PLOTTEANDO EN MATLAB
>> plot(x,y,'go')
!
Ej: Una ventana con una la 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 gura
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
!
Si pasamos error.ps a PDF, vemos lo siguiente:
print -dps error.ps
!
Primero, necesitamos crear un archivo.
!
El 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
ARCHIVOS EJECUTABLES
!
A 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: ??? Undened 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:
!
Para agregar un nuevo directorio al path de bsqueda en
plataformas UNIX:
!
Para remover directorios del path de bsqueda utilizamos la
funcin rmpath:
path(path,'c:\documents and settings\erika\desktop')
path(path,'/Users/erika/Desktop')
rmpath('/Users/erika/Desktop')
!
Para utilizar el editor de Matlab para crear el archivo, escribir:
Matlab nos preguntara si deseamos crear el archivo, a lo que
indicaremos que si:
>> edit rectangle_area.m
!
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:
!
En este momento, deberemos obtener el siguiente error:
!
Si se trata de llamar el archivo sin haber denido primero las
variables b y h, se obtendr un mensaje de error.
!
Es importante antes de mandar llamar el archivo, denir todas las
variables que no estn denidas dentro del mismo.
>> rectangle_area
>> rectangle_area
??? Undefined function or variable 'b'.
Error in ==> rectangle_area at 20
A = b * h;
>> b = 5;
>> h = 4;
>> rectangle_area
>> who
Your variables are:
A b h
>> whos
Name Size Bytes Class Attributes
A 1x1 8 double
b 1x1 8 double
h 1x1 8 double
>> A
A =
20
!
Una vez que las variables necesarias se han denido, 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.
!
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.
SUBRUTINAS EN MATLAB
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 le
>> 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)
!
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:
EL ENUNCIADO IF
if (condition statement)
(matlab commands)
end
!
Una estructura condicional mas complicada:
if (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
!
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.
ARCHIVOS
!
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 Bytes Class Attributes
u 1x3 24 double
v 1x3 24 double
>> save todo.mat
>> ls
todo.mat
!
ls es el comando para listar todos los archivos en el directorio
actual.
!
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 Bytes Class Attributes
u 1x3 24 double
v 1x3 24 double
>> u + v
ans =
3 2 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 especica 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 Bytes Class Attributes
u 1x3 24 double
>> u
u =
1 3 -4
!
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 til para entregar tareas o para tomar notas.
!
El diario de una sesin:
!
Es iniciado con el comando diary seguido del nombre del
archivo en donde se guardara el texto.
!
Seguido de todos los comandos que formarn el diario
!
Al nalizar, escribir el comando diary solo, lo que escribir una
copia exacta de la sesin en el archivo y lo cerrar.
>> diary diario.txt
>> a = [1 2 3]
a =
1 2 3
>> b = [4 5 6]
b =
4 5 6
>> a + b
ans =
5 7 9
>> diary
!
Ej: Generar un diario en el archivo diario.txt
!
El contenido del archivo diario.txt es el siguiente:
!
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:
!
Lo que nos despliega una ventana con la informacin que
solicitamos como la que podemos ver en la siguiente diapositiva.
DOCUMENTACIN
>> doc nombre_de_la_funcion
!
Realice un programa en Matlab que
le permita conocer las races de una
ecuacin de segundo grado.
!
Dispone de 30 minutos.
EJERCICIO
!
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
>> [x1, x2] = raices(1,3,1)
x1 =
-0.3820
x2 =
-2.6180
!
Corriendo el programa:
!
Si nuestro cdigo tuviera una indentacin incorrecta y queremos
que Matlab la corrija por nosotros:
!
Seleccionamos el cdigo a corregir
!
Click 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,6)
Raices complejas
x1 =
-1.5000 + 1.9365i
x2 =
-1.5000 - 1.9365i
>> [x1, x2] = raices(1,3,1)
Raices reales
x1 =
-0.3820
x2 =
-2.6180
!
Para limpiar de comandos nuestra ventana Command Window,
utilizamos la funcin clc
"
!
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.
DEBUGGER
"
!
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 les,
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 la condicin y presionar el botn OK
!
Correr 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 especca de nuestro cdigo en lugar de
evaluar todo nuestro programa
!
Seleccionar el rea que se desea evaluar
!
Click derecho, seleccionar Evaluate Selection
!
Los resultados aparecern en el Command Window
$
"
!
Enteros
!
Strings
!
Booleanos
!
Celdas
!
Estructuras
!
Variables Simblicas
!
Objetos
TIPOS DE DATOS
!
Conversiones entre tipos de datos:
!
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.
GENERACIN 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 identicando la celda
!
Posteriormente, con % indicamos la descripcin.
!
Para crear otra celda %%
!
Colocaremos de este modo la descripcin de cada etapa de
este script.
!
Una vez que ya escribimos todas las descripciones, dar click en la
echa que aparece al lado del icono lo que nos lleva al
editor de conguracin 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 " Colocar el texto entre asteriscos *texto*
!
Italicas " 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 la segunda opcin
!
Bajar 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

Anda mungkin juga menyukai