Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccion A Matlab I PDF
Introduccion A Matlab I PDF
Alumno:
Control I
RESUMEN
En el siguiente trabajo se pretende dar una breve introduccin al ambiente de trabajo en
MATLAB, empezando por comandos bsicos como las operaciones aritmticas, funciones
elementales, comandos bsicos para ayuda y guardar datos. Despus se introduce a lo que
son las matrices y los vectores que son el principal tipo de datos que maneja MATLAB, y se
continua con lo que son funciones, para concluir con una introduccin a grficas 2-D
viendo las distintas formas de edicin.
INTRODUCCIN
MATLAB es el acronimo de MATrix LABoratory (Laboratorio de Matrices) y originalmente fue
desarrollado para realizar operaciones con matrices. Actualmente MATLAB es un sistema
interactivo nico para clculo de operaciones matemticas y programacin que integra
visualizacin grfica en 2 y 3 dimenciones. Algunos de los usos ms comunes de MATLAB son:
1.
2.
3.
4.
5.
Calculos matemticos
Desarrollo de algoritmos
Modelado y simulacin
Analisis de datos y obtencin de grficas
Desarrollo de interfaces grficas
DESARROLLO
Durante el desarrollo de esta prctica se ver el funcionamiento del ambiente de trabajo de
MATLAB, en cada una de las explicaciones se darn ejemplos del funcionamiento del ambiente de
MATLAB.
Iniciando MATLAB
Para Instalar MATLAB es necesario insertar el DVD que contiene el paquete y seguir los pasos que
se indican por el programa de instalacin. Al terminar la instalacin, en el escritorio (Desktop)
aparecer el icono de MATLAB como acceso directo, al presionar este icono se ejecutar MATLAB
y aparecer la ventana de MATLAB como se muestra en la figura 1.
ans =
10
Las operaciones aritmticas bsicas se muestran en la tabla I.
Operacin
Suma
Resta
Multiplicacin
Divisin
Potenciacin
| |
Si aproximamos el valor de
que:
Inf
NaN
Donde eps es una cantidad que se usa generalmente para evitar una divisin por cero y NaN es
una notacin que MATLAB da cuando el resultado de una operacin no es un dato numrico.
Formato de Visualizacin de Nmeros
Los formatos de visualizacin de nmeros no cambian la representacin interna de un nmero
cuando se escogen diferentes formatos; solo se modifica la visualizacin del nmero. Esto se
puede hacer usando alguno de los formatos mostrados en la tabla IV donde se usa . Por ejemplo:
>> format rat
>> z=pi
z=
355/113
Formato de MATLAB
Expresiones Fundamentales
Trabajar en el entorno de MATLAB es muy simple ya que la mayora de los comandos son
ingresados de la misma manera que si se hara matemticamente. A dems para definir
una variable a diferencia de los lenguajes de programacin como FORTRAN y C, no
necesitan declararse previamente en otra instruccin; es decir, la variable se crea al
momento de escribirse. Por ejemplo, la variable a se crea en MATLAB cuando se escribe
por primera vez con:
>> a = 8/3
a=
2.6667
Por medio de este comando se le ha asignado el valor de 2.6667 a la variable a, tendr
ese valor hasta que el usuario lo cambie por otro. Los nombres de las variables pueden
tener un tamao de hasta 63 caracteres de largo requiriendo solamente que el nombre
comience con una letra. Si un nombre de variable tiene ms de 63 caracteres solo se
conservan los primeros 63. En el caso de estar interesado solamente en el resultado de la
expresin y no en la asignacin del mismo a alguna variable, se puede escribir:
>> 8/3
ans =
2.6667
Donde la variable ans es una variable interna utilizada por MATLAB para almacenar
resultados que no han sido asignados a ninguna otra variable. Notar que el contenido de
ans cambia cada vez que una operacin como la antes mencionada es realizada. Por lo
tanto si el resultado se va a utilizar posteriormente, es recomendable guardarlo en alguna
otra variable. MATLAB tiene algunas variables predefinidas que se muestran en la Tabla III.
Como estas variables pueden estar sobrescritas, se recomienda usarlas con cuidado ya
que por ejemplo si o se usan como ndices de elementos de un vector o una matrz y
luego se desea hacer la siguiente asignacin:
>> z = 1 + 2*i
El resultado no ser el nmero complejo esperado. Para restablecer el valor de se puede
usar el comando clear .
Cada vez que MATLAB ejecuta una accin, el resultado se escribe en pantalla. Para
suprimir la escritura del resultado, es necesario usar punto y coma despus de escribir la
operacin que deseamos realizar, por ejemplo:
>> 3+7
ans =
10
>> 3+7;
La primera vez que ejecutamos 3+7 MATLAB nos da el resultado inmediatamente, mientras que la
segunda vez al escribir punto y coma el resultado no se escribe y solo se guarda para usarlo
posteriormente.
Los nombres de las variables no son iguales si se escriben con letras maysculas o minsculas. De
esta manera, la variable A es diferente a la variable a.
Para borrar variables se usa la instruccin clear,
>> clear a
Borra solamente la variable a, mientras que
>> clear
Borra todas las variables que se hayan definido desde que se empez la sesin actual de
MATLAB.
Ayuda en Lnea
MATLAB tiene un comando llamado help muy bien documentado. Escribiendo help,
MATLAB despliega un ndice con aclaraciones que sirve para orientarse a la hora de buscar
algn comando en particular. Por ejemplo, supongamos que se desea evaluar la siguiente
expresin
, escribiendo help obtenemos:
>> help
HELP topics:
matlab\general
matlab\ops
matlab\lang
matlab\elmat
matlab\randfun
matlab\elfun
- Elementary math functions.
matlab\specfun
- Specialized math functions.
matlab\matfun
- Matrix functions - numerical linear algebra.
.
Donde podemos inferir que la informacin que estamos buscando puede estar dentro de
los comandos agrupados en elementary math functions:
>> help elfun
Elementary math functions.
Trigonometric.
sin
- Sine.
sind
- Sine of argument in degrees.
..
Exponential.
exp
- Exponential.
expm1
- Compute exp(x)-1 accurately.
log
- Natural logarithm.
Complex.
abs
- Absolute value.
angle
- Phase angle.
complex - Construct complex data from real and imaginary parts.
Ahora entramos a la funcin exp y nos aparecer la forma de usar dicha funcin, tambin se puede
escribir como:
>> help exp
EXP Exponential.
EXP(X) is the exponential of the elements of X, e to the X.
For complex Z=X+i*Y, EXP(Z) = EXP(X)*(COS(Y)+i*SIN(Y)).
Por lo tanto para la expresin
, se introduce:
Matrices y Vectores
Las matrices con el principal tipo de datos que maneja MATLAB. Comenzaremos
escribiendo una matriz como una lista de elementos. Solamente hay que seguir unas
convenciones bsicas:
1. Separa los elementos de una fila con espacios o comas.
2. Usar punto y coma (;) para indicar el fin de cada rengln o fila.
3. Encerrar la lista entera de los elementos con parntesis cuadrados, [ ].
Cada elemento de una matriz tiene una posicin ij que corresponde a su posicin en la isima fila y en la j-sima columna. El comando
A (i,j)
Proporciona el elemento del rengln i y la columna j.
Por ejemplo, al entrar la siguiente matriz a, MATLAB muestra:
>> a = [1 2; 3 4]
a=
1 2
3 4
Los elementos de una matriz pueden ser alguna expresin, por ejemplo:
>> x = [-1.3 sqrt(2) (1+2+3)*4/5]
x=
-1.3000 1.4142 4.8000
Se pueden juntar dos matrices con mismo nmero de columnas en una sola matriz, por
ejemplo:
>> A = [1 2 3; 4 5 6; 7 8 9]; R = [10 11 12];
>> B = [A ; R]
B=
1 2 3
4 5 6
7 8 9
10 11 12
Se pone R debajo de A. Tambin se puede extraer una submatriz de una matriz, por ejemplo:
>> C=B(2:3,2:3)
C=
% la 3 y de la columna 2 a la 3
5
8
6
9
bien
bien
Se puede obtener informacin en el rea de trabajo con who o con whos; por ejemplo:
>> who
Your variables are:
A B C R x
Size
Bytes
A
B
C
R
x
2x2
2x2
2x2
1x3
1x3
64
64
32
24
24
Class
Attributes
double complex
double complex
double
double
double
Notese que cada elemento de una matriz real ocupa 8 bytes de memoria, todas las
variables ocupan 208 bytes
El operador : sirve para indicar intervalos de incremento o decremento en una matriz.
Por ejemplo
>> v = [1:0.5:3]
v=
1.0000 1.5000 2.0000 2.5000 3.0000
O en dado caso solo se especifica la variable que se requiera, en este caso puede ser A o x.
Para cargar todo lo que se guard en filename, se teclea:
% Suspende la ejecucin
% Reanuda la ejecucin
De esta manera tenemos que lo que se guarda en el archivo sesion.txt es lo que est
escrito con letras moradas. El simple comando diary pasa de on a off y viceversa. Para
poder acceder al fichero sesion.txt con Notepad o Word es necesario que diary est en off.
Si el comando diary no incluye el nombre del fichero se utiliza por defecto un fichero
llamado diary (sin extensin).
]
]
]
]
]
]
]
Ejercicios:
1) Crea un array de cero a 1 con incrementos de 0.1, multiplicado por .
>> X = [0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]
X=
Columns 1 through 8
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991
Columns 9 through 11
2.5133 2.8274 3.1416
2) Crea otro array Y a partir del ya creado X, obteniendo el seno de cada elemento.
>> Y = sin(X)
Y=
Columns 1 through 8
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090
Columns 9 through 11
0.5878 0.3090 0.0000
3) Muestra el tercer elemento del array X.
>> X(3)
ans =
0.6283
4) Se obtienen elementos del 1 al 5 del array X.
>> X(1:5)
ans =
0 0.3142 0.6283 0.9425 1.2566
5) Se obtienen elementos del 3 al 1, observar que en este caso se va en decremento (es
de -1). Nos muestra entonces el elemento 3, el 2 y el 1.
>> X(3:-1:1)
ans =
0.6283 0.3142
11) Crea un array D; en el cual se incluyen elementos del array A que van del 1 al 5 con
incrementos de 2 en 2, y al final se incluyen los elementos 1, 0 y 1.
>> D = [A(1:2:5) 1 0 1]
D=
1 3 5 1 0 1
12) Se resta 2 a cada elemento del array A.
>> A-2
ans =
-1 0
13) Se multiplica cada elemento del array A por 2 y se le resta 1, recordar que la
multiplicacin tiene mayor precedencia que la suma.
>> 2*A-1
ans =
1 3 5
>> A (3,3)=0
A=
1 2 3
4 5 6
7 8 0
>> A(2,6)= 1
A=
1 2 3
4 5 6
7 8 0
0
0
0
0
0
0
0
1
0
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
>> B = A(3:-1:1,:)
B=
7 8 9
4 5 6
1 2 3
>> B = A(1:2,2:3)
B=
2 3
5 6
>> C = [1 3]
C=
1 3
>> B = A(:)
B=
1
4
7
2
5
8
3
6
9
>> B = B.'
B=
1 4 7
>> B = A
B=
1 2
4 5
7 8
9
%Asigna la matriz A a la variable B, se remplaza su
%valor anterior de esta ltima.
3
6
9
>> B(:,2)=[]
B=
1 3
4 6
7 9
>> B = B.'
B=
1 4 7
3 6 9
>> B(2,:)=[]
B=
1 4 7
>> A(2,:)= B
A=
1 2 3
1 4 7
7 8 9
>> X = -3:0.5:3
%Crea un vector X con valores desde -3 hasta 3, con
X=
%incrementos de 0.5
Columns 1 through 8
-3.0000 -2.5000 -2.0000 -1.5000 -1.0000 -0.5000
0 0.5000
Columns 9 through 13
1.0000 1.5000 2.0000 2.5000 3.0000
>> X=-3 :3
X=
-3 -2 -1
>> y=abs(X)>1
y=
1 1 0 0
>> y= X(abs(X)> 1)
y=
-3 -2 2 3
>> X (abs(X)>2)=[]
X=
-2 -1 0 1 2
Para almacenar una matriz de caracteres, primero es necesario declarar la variable, puede
estar vaca:
>> v =[]
Luego se ocupa crear un script, para eso hay que dar click en el cono
y se abrir
ventana como en la figura 3. Donde a la matriz v la llenamos con caracteres.
Para mejorar su visin, es comn dibujar una lnea recta entre cada par de puntos
marcados. Utilizando array, MATLAB sigue este mismo enfoque para hacer grficas.
Considerando la misma tarea de dibujar una onda senoidal tal como la que acabamos de
describir.
>> z = cos(x);
>> plot(x,y,x,z)
>> plot(x,y)
>> hold on
>> title('2sin(x)cos(x)=sin(2x)')
Smbolo
2.
coloca una rejilla en las marcas de la grfica.
3. Se pueden aadir ttulos y etiquetas en los ejes usando
4. La orden text (x, y, S) aade una cadena de caracteres S a la grfica actual en las
coordenadas (x, y)
5.
permite colocar texto interactivamente en la grfica utilizando el ratn.
6.
cambia los lmites de los ejes o la apariencia de las grficas (obtener ayuda
con help axis).
7. Se pueden aadir grficas a la grfica actual fijando hold on. Haciendo hold off
permite que la prxima orden de plot borre la ventana de la figura antes de hacer
una nueva grfica.
8. Se pueden generar mltiples ventanas de figuras mediante la orden figure.
figure(n) escoge que ventana de figura n sea la ventana de la figura activa.
9. Una ventana de figura se puede subdividir en un matriz
y cualquier
subdivisin hacerse activa con la orden
(escoge como activa el
rea p-sima).
10. Si fija
, la ventana de la figura activa se puede expandir interactivamente
usando el ratn, seleccionando el rea de expansin o simplemente con un click
del ratn,
lo desactiva.
Ejercicios:
>> x = linspace (0,2*pi,20)
%Genera 20 puntos en el eje x entre 0 y
x=
%y los almacena en la variable x
Columns 1 through 8
0 0.3307 0.6614 0.9921 1.3228 1.6535 1.9842 2.3149
Columns 9 through 16
2.6456 2.9762 3.3069 3.6376 3.9683 4.2990 4.6297 4.9604
Columns 17 through 20
5.2911 5.6218 5.9525 6.2832
>> y=sin(x)
%Obtiene el seno de cada uno de los elementos de la
y=
%variable x, y los almacena en la variable y
Columns 1 through 8
0 0.3247 0.6142 0.8372 0.9694 0.9966 0.9158 0.7357
Columns 9 through 16
0.4759 0.1646 -0.1646 -0.4759 -0.7357 -0.9158 -0.9966 -0.9694
Columns 17 through 20
-0.8372 -0.6142 -0.3247 -0.0000
>> z=cos(x)
z=
Columns 1 through 8
1.0000 0.9458 0.7891
Columns 9 through 16
-0.8795 -0.9864 -0.9864
Columns 17 through 20
0.5469 0.7891 0.9458
>> w =[y;z]
%Crea una matriz w a partir de los vectores y y z,
w=
%que corresponde a las funciones seno y coseno
Columns 1 through 8
0 0.3247 0.6142 0.8372 0.9694 0.9966 0.9158 0.7357
1.0000 0.9458 0.7891 0.5469 0.2455 -0.0826 -0.4017 -0.6773
Columns 9 through 16
0.4759 0.1646 -0.1646 -0.4759 -0.7357 -0.9158 -0.9966 -0.9694
-0.8795 -0.9864 -0.9864 -0.8795 -0.6773 -0.4017 -0.0826 0.2455
Columns 17 through 20
-0.8372 -0.6142 -0.3247 -0.0000
0.5469 0.7891 0.9458 1.0000
>> plot (x, w), title('Figura 10')
>> figure(2)
>> plot(w, x),title('Figura 11')
>> grid
>> xlabel('Variable independiente x')
>> ylabel('Variable dependiente y z')
>> title('Curvas del seno y coseno')
>> text(3.0,0.3,'sin(x)')
>> gtext('cos(x)')
>> subplot(2,2,1)
%Se selecciona la subgrfica superior izquierda
>> grid off, plot(x,y), axis off, title('sin(x)') %Se desactiva la rejilla, se grfica la funcin
%seno, se eliminan los ejes de referencia y se
%le pone el ttulo.
>> subplot(2,2,2)
%Se selecciona la subgrfica superior derecha
>> grid on, plot(x,z), axis on, title('cos(x)') %Se activa la rejilla, se grfica la funcin
%coseno, se agregan los ejes de referencia
%y se pone el ttulo
>> subplot(2,2,3)
%Se selecciona la subgrfica inferior izquierda
>> grid off, plot(x,2*y.*z), axis ij
%Se desactiva la rejilla, se grfica la funcin
%sen(2x), el eje vertical aumenta de arriba
%hacia abajo
>> subplot(2,2,4)
%Se selecciona la subgrfica inferior derecha
>> plot(x,y./z), axis ('xy', 'normal')
%Se grfica la funcin sen(x)/cos(x) y se
%retornan los valores por defecto
>> grid on, title('sin(x)/cos(x)')
%Se activa la rejilla y se agrega un ttulo
>> subplot(2,2,3), grid
%Se regresa a la subgrfica inferior izquierda
>> title('2sin(x)cos(x)')
%Se le agrega un ttulo
>> subplot(1,1,1)
>> plot(x,y./z)
>> grid on, title('sin(x)/cos(x)')
>> zoom on
sin(x)/cos(x)
12
10
8
6
4
2
0
-2
-4
3.6
3.8
4.2
4.4
4.6
4.8
5.2
5.4
5.6
1.
2.
es lo mismo que
, excepto que se usan logartmicas para ambos ejes.
es lo mismo que
excepto que usa una escala logartmica en el eje x
y escala lineal en el eje y.
es lo mismo solo que el eje y es el de la escala
logartmica y el eje x es lineal.
3. La secuencia de datos discretos se puede representar usando la funcin
Ejercicios:
>> loglog (x,y)
%Se grfica con una escala
%logartmica para la funcin
%seno
-0.1
10
-0.2
10
-0.3
10
-0.4
10
-0.5
10
-0.6
10
-0.7
10
10
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
-0.1
10
-0.2
10
-0.3
10
-0.4
10
-0.5
10
-0.6
10
-0.7
10
0.5
1.5
2.5
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
CONCLUSIONES
Cuando obtuvimos el valor del seno de , mediante la instruccin:
>> sin (pi)
ans =
1.2246e-016
Dicho valor obtenido es una aproximacin a cero, podemos entonces concluir que
MATLAB usa algoritmos basados en mtodos numricos para aproximar el valor de
algunas funciones. As pues del mismo modo que lo hacen las calculadoras, solo que
MATLAB nos da un valor muy aproximado a cero por su gran capacidad de memoria de
almacenamiento, mientras que la calculadora solo lo redondea.
BIBLIOGRAFA
[1] Dr. Osvaldo Gutirrez Snchez, Control I, Instituto Tecnolgico de Morelia, Departamento de
Ingeniera Elctrica.
[2] David Bez Lpez, MATLAB con Aplicaciones a la Ingeniera, Fsica y Finanzas, 1ra. Edicin,
Editorial Alfaomega, septiembre 2006.
[3] Javier Garca de Jaln, Jos Ignacio Rodrguez, Alfonso Brazlez, Aprenda Matlab 5.3 como si
estuviera en primero, Perteneciente a la coleccin: Aprenda, como si estuviera en primero,
San Sebastin, Agosto 1999.