TUTORIAL DE MATLAB

Transcripción

TUTORIAL DE MATLAB
TUTORIAL DE MATLAB
M. en C. Erika Vilches
๏ Toda
línea que comience con
>>
es utilizada para denotar la línea de comando de Matlab, donde se
insertan los comando.
๏ Casi
todos los comandos básicos de Matlab giran en torno al uso
de vectores.
VECTORES
๏ Un
vector se define poniendo una secuencia de números dentro
de corchetes.
>> v = [3 1]
v =
3
๏ Esto
๏ El
1
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 después del enter
✴ Si
se desea suprimir el resultado, poner un punto y coma al final
de la línea
>> v = [3 1];
>>
๏ Si
se desea ver un vector, escribir el nombre de su etiqueta:
>> v
v =
3
1
๏ De
esta forma, se puede definir un vector de cualquier tamaño.
>> v = [3 1 7 -21 5 6]
v =
3
๏ Note
1
7
-21
5
6
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 apóstrofe
“‘“
>> v = [3 1 7 -21 5 6]'
v =
3
1
7
-21
5
6
๏ Crear
un vector con una secuencia de números con un
incremento común → Utilizar dos puntos “ : “
>> v = [1:8]
v =
1
๏ Para
2
3
4
5
6
7
8
utilizar un incremento distinto a uno, definir el número de
inicio, el valor del incremento y el último número.
>> 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
asignación, 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 quisiéramos ver una
transpuesta del resultado:
>> [0:2:8]
ans =
0
>> ans'
ans =
0
2
4
6
8
2
4
6
8
๏ Matlab
permite ver partes específicas del vector.
>> v = [0:2:8]
v =
0
>> v(1:3)
ans =
0
2
0
4
6
8
← Se puede utilizar la misma notación que para
crear el vector
2
>> v(1:2:4)'
ans =
4
4
๏ Una
vez dominada la notación, podemos realizar otras
operaciones:
>> v(1:3)-v(2:4)
ans =
-2
๏ En
-2
-2
su mayoría, Matlab utiliza la notación estándar utilizada en
álgebra lineal.
๏ Ejemplo: Definir
un nuevo vector con los números de 0 a -4 en
pasos de -1.
>> u = [0:-1:-4]
u =
0
๏ Sumar
-1
-2
-3
-4
u con v del modo estándar:
>> u+v
ans =
0
1
2
3
4
๏ La
multiplicación y división escalar se definen del modo estándar.
>> -2*u
ans =
0
2
4
6
8
>> v/3
ans =
0
0.6667
1.3333
2.0000
2.6667
๏ Con
estas definiciones las combinaciones lineales de vectores
pueden ser definidas fácilmente y las operaciones básicas
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
๏ También
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 noción 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
multiplicación matriz-vector puede hacerse facilmente.
✴ Es
importante tener en cuidado de que las matrices y vectores
tengan en tamaño 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
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 estándar 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 aproximación
de los eigen valores de una matriz. Hay dos versiones de esta
rutina:
✴ Una
✴ La
sólo encuentra los eigen valores
otra encuentra ambos, los eigen valores y los eigen vectores
✴ Si
olvida cual es cual, puede obtener más información
escribiendo help eig en el prompt
‣
Para obtener información de cualquier función: 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 opinión 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
๏ Sumándolos
>> v+b
ans =
3
6
9
>> v-b
ans =
-1
-2
-3
y restándolos:
๏ 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 multiplicación el número 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 símbolo
“ .* “
‣
Es posible colocar un punto delante de cada símbolo
matemático para indicarle a Matlab que se desea que la
operación 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 función matemática predefinida,
regresará un vector del mismo tamaño, donde cada entrada es
encontrada realizando la operación 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 tamaño del
mismo modo que hemos trabajado vectores pequeños.
>> 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));
๏A
través de esta misma simple manipulación de vectores, Matlab
permite graficar los resultados.
>> plot(x,y)
๏A
través de esta misma simple manipulación de vectores, Matlab
permite graficar los resultados.
>> plot(x,y,'rx')
๏ Para
conocer más de la función 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
4
7
10
3
4
>> for j=1:4,
v(j) = j;
end
>> v
v =
1
2
๏ 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 operación 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 condición 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 gráfica en una sola imágen
utilizamos el comando subplot.
✴ Matlab
tratara a la ventana como un arreglo de plots.
๏ Ej: Una
>>
>>
>>
>>
ventana con una fila y dos columnas, dándonos 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 título a nuestro plot, utilizamos la función title.
๏ Para
darle una etiqueta al eje x utilizamos la función xlabel.
๏ Para
darle una etiqueta al eje y utilizamos la función 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 fácil de iniciar.
‣
No es un editor muy avanzado.
๏ Los
archivos ejecutables de Matlab tienen la extensión *.m
✴ En
este ejemplo crearemos el archivo rectangle_area.m
✴A
continuación, 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 búsqueda, 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 búsqueda en
plataformas Windows:
path(path,'c:\documents and settings\erika\desktop')
๏ Para
agregar un nuevo directorio al path de búsqueda en
plataformas UNIX:
path(path,'/Users/erika/Desktop')
๏ Para
remover directorios del path de búsqueda utilizamos la
función 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 estén definidas dentro del mismo.
>>
>>
>>
>>
b = 5;
h = 4;
rectangle_area
who
Your variables are:
A
b
h
>> 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 más 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 función
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 línea, actúan 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
básica vemos a continuación:
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 estándar.
๏ Las
comparaciones válidas 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
condición
>> a = 4;
>> b = 4;
>> f (a<b)
j = -1;
elseif (a>b)
j = 2;
else
j = 3
end
๏ Se
pueden comprobar múltiples expresiones booleanas utilizando
los operadores estándar "&" (and), ¦ (or) y ˜ (not).
if (a < b) & (b >= c)
Matlab commands
end
ARCHIVOS
๏ Conforme
se trabaja en una sesión, se generan matrices y
vectores
๏ El
comando utilizado para guardar TODOS los datos de una
sesión es save.
๏ El
comando utilizado para traer el conjunto de datos guardado en
un archivo a la sesión es load.
๏ Ej: Guardar
todos los datos presentes en la sesión en un archivo
llamado todo.mat (*.mat es la extensión 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
2
3
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.
๏ Después
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
3
Bytes
-4
Class
double
Attributes
๏ El
comando save funciona exáctamente de la misma forma
✴ Si
solamente se desea guardar un par de variables, se enlistan
dichas variables después del nombre del archivo separadas por
espacios
๏ Para
conocer más información sobre save, escribir help save
✴ Hay
varias opciones para formato del archivo, etc.
๏ Matlab
permite guardar los datos generados en una sesión
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 sesión:
✴ Es
iniciado con el comando diary seguido del nombre del
archivo en donde se guardara el texto.
✴ Seguido
✴ Al
de todos los comandos que formarán el diario
finalizar, escribir el comando diary solo, lo que escribirá una
copia exacta de la sesión en el archivo y lo cerrará.
๏ Ej: Generar
un diario en el archivo diario.txt
>> diary diario.txt
>> a = [1 2 3]
a =
1
2
3
>> b = [4 5 6]
b =
4
5
6
7
9
>> a + b
ans =
5
>> diary
๏ El
contenido del archivo diario.txt es el siguiente:
DOCUMENTACIÓN
๏ Para
ver la ayuda de las funciones disponibles en Matlab de un
modo más visual que el texto plano que ofrece la función help
utilizamos la función:
>> doc nombre_de_la_funcion
๏ Lo
que nos despliega una ventana con la información que
solicitamos como la que podemos ver en la siguiente diapositiva.
EJERCICIO
๏ Realice
un programa en Matlab que
le permita conocer las raíces de una
ecuación de segundo grado.
๏ Dispone
de 30 minutos.
๏ Solución:
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 código tuviera una indentación incorrecta y queremos
que Matlab la corrija por nosotros:
✴ Seleccionamos
✴ Click
el código a corregir
derecho → Smart Indent
✴ Nuestro
código queda correctamente indentado.
๏ Si
queremos conocer el número de argumentos que nos envió el
usuario, utilizamos la función nargin
๏ Si
queremos conocer el número de resultados que espera
obtener el usuario, utilizamos la función nargout
๏ Para
enviar un mensaje de error y terminar el programa,
utilizamos la función 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 número 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 ejecución de
nuestro programa, utilizamos la función 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 función clc
→
DEBUGGER
๏ Para
utilizar el debugger, debemos colocar breakpoints
✴ Click
en la raya ubicada a la izquerda de la línea 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 función, en este caso:
๏ Esto
nos llevará automáticamente a la ventana del editor y
detendrá la ejecución en el breakpoint.
๏ Para
controlar la ejecución 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 línea en la que se coloca el
breakpoint y seleccionar “Set conditional breakpoint”
✴ Indicar
✴ Correr
la condición y presionar el botón “OK”
el programa desde el Command Window, la ejecución
se detendrá justo en el punto indicado, cuando la condición
indicada se haya cumplido.
↓
↓
๏ Para
evaluar un área específica de nuestro código en lugar de
evaluar todo nuestro programa
✴ Seleccionar
✴ Click
✴ Los
el área que se desea evaluar
derecho, seleccionar “Evaluate Selection”
resultados aparecerán en el Command Window
↓
→
TIPOS DE DATOS
๏ Enteros
๏ Strings
๏ Booleanos
๏ Celdas
๏ Estructuras
๏ Variables
๏ Objetos
Simbólicas
๏ Conversiones
entre tipos de datos:
GENERACIÓN 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 título utilizar “%% “ lo que automáticamente
cambia el color de fondo identificando la celda
๏ Posteriormente, con “%” indicamos
๏ Para
la descripción.
crear otra celda “%% “
✴ Colocaremos
este script.
de este modo la descripción 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 configuración de las publicaciones.
✴ Ahí
encontramos los distintos formatos de salida y
características de ellos.
๏ Al
momento de realizar la publicación hace correr el script
también. Ej: Publicación 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
ecuación
✴ Click
derecho
✴ “Insert Text
Markup”
✴ “Tex
Equation”
๏ Nos
despliega una ecuación default
๏ Para
conocer las opciones que tenemos para editar las
ecuaciones Tex:
✴ En
la documentación escribir “text properties”
✴ Seleccionar
✴ Bajar
la segunda opción
hasta encontrar las opciones para Tex
๏ Generando
el código LaTeX para la publicación:
>> 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 fórmulas en LaTeX en el lugar
donde se coloca la ecuación en nuestro script nos queda:
๏ Al
publicar, las fórmulas se ven así:
๏ Asimismo, podemos
elegir publicar nuestro reporte en LaTeX, lo
que nos devuelve lo siguiente:
... etc

Documentos relacionados