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