capítulo xx. introducción a matlab file• panel “command history” en donde se guarda una...
TRANSCRIPT
EmpresaTema
Capítulo xx.
Introducción a MATLAB
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
MATLAB es el nombre abreviado de “MATrix LABoratory” y es un producto software de la empresa MathWorks. MATLAB es un programa para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares −tanto reales como complejos−, con cadenas de caracteres y con otras estructuras de información más complejas. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones. MATLAB tiene también un lenguaje de programación propio.
Arranque de MATLAB
• En windows: Busque el icono de MATLAB o bien, desde el menú inicio
• En Linux: Desde una terminal teclee “matlab”.
En Linux se ve una pantalla como la siguiente
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Note todos los páneles que forman el entono de desarrolo de MATLAB:
• Barra de Menú
• Barra de iconos para acceso rápido
• Panel “current folder”
• Panel “details”
• Panel “Comand window” desde donde se teclean las comandos y ecuaciones.
• Panel “Work space” en donde se visualizan las variables.
• Panel “Command History” En donde se guarda una listado de cada linea tecleada en la “command window”.
Carpeta de trabajo
A la derecha del menu de iconos hay una etiqueta “current folder” tal como se ve en la figura siguiente.
Haciendo click en el botón de los tres puntos elija una carpeta en donde desee guardar sus archivos
También es posible cambiar de carpete de trabaja empleando la palabra reservada “cd” en la ventana de comandos:
• “cd ..” sale de la carpeta actual
• cd <carpeta>” entra a la carpeta especificada
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Básicos de MATLAB
Operaciones ariméticas básicas
Las operaciones aritméticas básicas definidas en MATLAB son:
Ejemplos
MI. Mario Alfredo Ibarra Carrillo Año 2012
Operación aritmética Símbolo de MATLAB (operadores)
suma “+”resta “-”producto “*”división “/”potenciación “^”
EmpresaTema
Formato para exhibir datos numéricos en la ventana de comandos
Especifica el formato numérico en el cual se exibirián los datos numéricos en la ventana de comandos
• format short : coma fija con 4 decimales (defecto)
• format long : coma fija con 15 decimales
• format hex : cifras hexadecimales
• format bank : números con dos cifras decimales
• format short e : notación científica con 4 decimales
• format short g : notación científica o decimal, dependiendo del valor
• format long e : notación científica con 15 decimales
• format long g : notación científica o decimal, dependiendo del valor
• format rat : expresa los números racionales como cocientes de enteros
Ejemplos:
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Constantes numéricas de MATLAB
Las constantes que se definen por defecto en MATLAB para su uso en diferentes funciones son
• π
• e
Funciones trascendentes
Para ingresar las funciones se debe respetar la sintaxis propia de MATLAB
función Sintaxis en command window
y=x2 y = x^2
y=x3 y = x^3y=√x y = sqrt(x)
y=n√ x y = x^(1/n)
y=sen(x) y= sen(x)y=cos(x) y= cos(x)y=tg (x) y=tan(x)
y=ex y=exp(x)y= ln x y=log(x)y= log
10y=log10(x)
y=∣x∣ y=abs(x)
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Vectores
Vector renglón
>format short
>x=[1,2,3,4,5]
x =
1 2 3 4 5
>y=rand([1,3])
y =
0.6555 0.1712 0.7060
Vector columna
>format short
>z=[1;2;3;4;5]
z =
1
2
3
4
5
>w=rand([3,1])
w =
0.0318
0.2769
0.0462
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Producto punto a punto
>format short
>E=[1,1,1,2,3,2,1,1];
>F=[1,2,3,2,1,1,1,1];
>E.*F
ans =
1 2 3 4 3 2 1 1
Cociente punto a punto
>format short
>E=[1,1,1,2,3,2,1,1];
>F=[1,2,3,2,1,1,1,1];
>E./F
ans =
1.0000 0.5000 0.3333 1.0000 3.0000 2.0000 1.0000 1.0000
>2./E
ans =
2.0000 2.0000 2.0000 1.0000 0.6667 1.0000 2.0000 2.0000
Transpuesta de un vector
trasnponer un vector renglón implica expresarlo como vector columna. En el otro caso, transponer un vector columna implica expresarlo como vector renglóin
>format short
>E=[1,,2,3]';
>ans=
1
2
3
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Producto punto entre dos vectores
>format short
>E=[1,1,1,2,3,2,1,1];
>F=[1,2,3,2,1,1,1,1];
>sum (E.*F)
ans =
17
otra forma de lograr el producto punto es transponiendo el segundo factor para que los vectores se multipliquen cual matrices, es decir, se usa F '
>format short
>E=[1,1,1,2,3,2,1,1]; %dimensiones de 1x8
>F=[1,2,3,2,1,1,1,1]; %dimensiones de 1x8
>E*F' %producto en (1x8) x (8,1) = (1x1)
ans=
17
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Matrices
Definición de una matriz
Una matriz se define en MATLAB expresándola renglón por renglón, cada uno separado por “;”
>format short
>A=[1 2 3; 4 5 6; 7 8 9 ]
A =
1 2 3
4 5 6
7 8 9
Inversa de matriz
>format short
>A=[1 2 3; 4 5 6; 7 8 9 ];
>inv (A)
ans =
1.0e+16 *
-0.4504 0.9007 -0.4504
0.9007 -1.8014 0.9007
-0.4504 0.9007 -0.4504
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Zeros (<rows>,<cols>)
Crea una matriz de ceros de rows renglones y de cols columnas”
>format short
>B=zeros(2,2)
B =
0 0
0 0
Ones (<rows>,<cols>)
Crea una matriz de unos de “rows” renglones y de “cols” columnas”
>format short
>B=ones(2,2)
B =
1 1
1 1
eye (<size>)
Crea una matriz identidad de tamaño ¿¿
>format short
>C=eye (2)
C =
1 0
0 1
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
magic(N); N>2
Crea una matriz de NxN con enteros de 1 a N2 con igual suma por renglones, por columnas y por diagonal.
>magic(3)
ans =
8 1 6
3 5 7
4 9 2
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Polinomios
[matlab61pro.pdf; pg 50]
Para MATLAB un polinomio se puede definir mediante un vector de coeficientes. Por ejemplo, el polinomio:
x4− 8 x2+ 6 x−10=0
Se puede representar mediante el vector [1, 0, -8, 6, -10]. MATLAB puede realizar diversas operaciones sobre éste, como por ejemplo evaluarlo para un determinado valor de x (función polyval()) y calcular las raíces (función roots()):
Las raices de un polinomio (función roots)
Para el polinomio x4− 8 x2+ 6 x−10=0
>pol=[1 0 -8 6 -10];
>roots(pol)
ans =
-3.2800
2.6748
0.3026 + 1.0238i
0.3026 - 1.0238i
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Evaluación de un polinomio (función polyval)
Producto de polinomio (función conv)
Se desea multiplicar los siguientes polinomios
A=x2−2x+ 4
B=x3+ 3x−4
Para calcular producto de polinomios, MATLAB utiliza una función llamada conv() (de producto de convolución).
>> A=[1 -2 4] ;
>> B=[1 0 3 -4]
>> C=conv(A,B)
C =
1 -2 7 -10 20 -16
Entonces, el polinomio resultante es:
C=x5−2 x4
+ 7 x3−10 x2
+ 20 x−16
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Cociente de polinomios (función deconv)
Dado el polinomio
N=x5+ 2x3−x−8
Se va a dividir por el siguiente wpolinomio
D=x2−2 x+ 1
>[C,R]=deconv(N,D)
C =
1 2 5 8
R =
0 0 0 0 10 -16
Entonces, el cociente es el polinomio
C=x3+ 2x2+ 5x+ 8
El residuo de la dividsión es:
R=10 x−16
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Capacidad de cálculo del hardware
Es con grandes matrices o grandes sistemas de ecuaciones como MATLAB obtiene toda la potencia del ordenador. Por ejemplo, las siguientes instrucciones permiten calcular la potencia de cálculo del ordenador en Megaflops (millones de operaciones aritméticas por segundo). En la primera línea se crean tres matrices de tamaño 500×500, las dos primeras con valores aleatorios y la tercera con valores cero. La segunda línea toma tiempos, realiza el producto de matrices, vuelve a tomar tiempos y calcula de modo aproximado el número de millones de operaciones realizadas. La tercera línea calcula los Megaflops por segundo, para lo cual utiliza la función etime() que calcula el tiempo transcurrido entre dos instantes definidos por dos llamadas a la función clock
>n=500; A=rand(n); B=rand(n); C=zeros(n);
>tini=clock; C=B*A; tend=clock; mflops=(2*n^3)/1000000;
>mflops/etime(tend,tini)
Por ejemplo, una laptop con la primera generación de core i7 corriendo ubuntu 11.04 provee a matlab con 1.5316E3 megaflops o bien, 1.5316 giglaflops.
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Manejo de menoria
Clear
El comando clear sin argumentos borra todas las variables creadas durante la sesión
Clear <variable>, <variable>, ...
Borra las variables especificadas en la lista de varaiables
>g=1;
>h=2;
>m=3;
>clear g
>clear h m
Los efectos del comando clear pueden verse en la “workspace window”
Save
Guardar el estado del sistema en el archivo matlab.mat en la carpeta de trabajo
El comando por sí solo guarda el estado de la sesión de trabajo, es decir, guarda las variables y su contenido, junto con las variables que definen el estado actual de MATLAB.
>> save
Antes de abandonar el programa, se crea en el directorio actual un fichero binario llamado matlab.mat (o matlab) con el estado de la sesión (excepto los gráficos, que por ocupar mucha memoria hay que guardar a parte).
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Load
Recupera el estado del sistema guardado en el archivo matlab.mat en la carpeta de trabajo
Dicho estado puede recuperarse la siguiente vez que se arranque el programa con el comando:
>> load
Save <filename> <lista de variables>
Guarda en el archivo de usuario las variables especificadas
La siguiente linea guarda las variables A, x e y en un fichero binario llamado filename.mat (o filename).
>> save filename A x y
load <filename>
Recupera las variables almacenadas en el archivo de usuario
Para recuperar las variables almacenadas en el archivo filane.mat se teclea:
>> load filename
clc
“Clear Console” o borrar consola
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Crear una señal senoidal
Telece los siguiente
>N=100; %100 muestras
>T=3E-3; %3 milisegundos
>Ts=T/N; %periodo de muestreo
>t=0:Ts:T*(1-1/N); %Vector de tiempo muestreado
>f=1000; %frecuencia de la senoide
>y=sin(2*pi*f*t);
Entonces verificamos el tamaño de los vectores creados
>size(t)
ans =
100
>size(y)
ans =
100
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
plot(<variable de ordenadas>)
plot (<variable de abcisas> <variable de ordenadas>)
plot (<variable de abcisas> <variable de ordenadas>,'<color>')
Para la senoide del ejemplo anterior se hace
>plot(t,y)
Si desea especificar un colo para el trazo hacemos
>close %cierra la ventana con la gráfica
>plot(t,y,'r') %Crea una gráfica en color rojo
La gráfica generada puede guardarse en disco mediante menú “file ->save as”. Entonces elija el nombre del archivo y el formato. Los formatos pueden ser
• MATLAB figure *.fig
• Adobe illustrator *.ai,
• EPS file *.eps
• JPEG image *.jpg
• Portable Network Graphics *.png
• TIFF Image *.tif
• etc.
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Finalmente debe cerrarse la gráfica
>close
Script *.m
En la ventana de comando tecle
>edit senoide
Aparece un cuadro de diálogo que indica que el archivo no existe, es decir
Presione el botón “yes” para crearlos y que se abra el editor de scripts. Entonces teclee el código siguiente:
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
N=100; %100 muestras
T=3E-3; %3 milisegundos
Ts=T/N;%periodo de muestreo
t=0:Ts:T*(1-1/N); %Vector de tiempo muestreado
f=1000; %frecuencia de la senoide
y=sin(2*pi*f*t);
plot(t,y)
Salve el c digo mediante el menú “file->save”ṕ
Ejecute el código en la ventana de comandos tecleando
>senoide
MI. Mario Alfredo Ibarra Carrillo Año 2012
EmpresaTema
Bibliografía
Javier García de Jalón
José Ingnacio Rodrígues
Alfonso Brazález
Aprenda MATLAB 6.1 como si estuvviera en primero
Madrid
Octubre 2001
MI. Mario Alfredo Ibarra Carrillo Año 2012