1intromatlabk
DESCRIPTION
nmjklkjhkhkjTRANSCRIPT
Laboratorio de Computación Científica
I d ió MATLABI d ió MATLABPrimer semestre
Introducción a MATLABIntroducción a MATLABy OCTAVEy OCTAVEy OCTAVEy OCTAVE
Temario
I d ió Introducción MATLAB y su entorno OCTAVE y entorno Editor M-Files Ayuda VariablesVariables Tipos de Datos Matrices Matrices Vectores
IntroducciónIntroducción ¿Qué es MATLAB? ¿Qué es MATLAB?
Acrónimo de MATrix LABoratory Es un SW que combina la programación en un lenguaje de alto nivel y la
capacidad de visualización de resultados. Su computación numérica está basada en matrices. Mathworks matlab estudiante ~ 100 euros
¿Qué es OCTAVE? GNU Octave es un lenguaje de alto nivel pensado principalmente para el GNU Octave es un lenguaje de alto nivel, pensado principalmente para el
cálculo numérico. Interfaz compatible con Matlab en un alto grado. Proyecto GNU es software libre bajo los términos de la Licencia Pública
General de GNUGeneral de GNU. Otros SW libre:
freeMat: http://freemat.sourceforge.net/ con entorno parecido a Matlab “Is FreeMat 100% compatible with MATLAB? What about IDL?” “No. FreeMat supports roughly 95% (a made up statistic) of the
features in MATLAB.”
IDL: es un lenguaje de informática utilizado para describir la interfaz de componentes software,permitiendo la comunicación entre componentes de software desarrollados en diferentes lenguajes
Matlab y octave en los laboratoriosMatlab y octave en los laboratorios
Existen varias versión del MATLAB/OCTAVEMATLAB/OCTAVE en los laboratorios MATLAB 5.3 MATLAB 5.3
(licencia local) MATLAB 7.0
(licencia en red) OCTAVE 3.0
V ió Versión en consola
MATLABMATLABGUI similar alGUI similar al
entorno Windows Directorio de trabajo
líneas de comandos
últimos comandos
Directorio de trabajo
últimos comandos
Octave (I)Octave (I)V ió t it d SW i tífi Versión gratuita de SW científico Ficheros .m compatibles con MATLAB y la mayoría de
los comandoslos comandos Multiplataforma: Windows XP/7, Linux y MAC Versiones multiplataforma descargables en
htt // t f t/http://octave.sourceforge.net/ Versiones gráficas en Windows:
GUIoctave (entorno similar a MATLAB): GUIoctave (entorno similar a MATLAB): http://guioctave.com/
Qt-octave: haciendo uso de las librerías gráficas GNU Qt enGNU-Qt en http://qtoctave.wordpress.com/2010/01/01/qtoctave-0-8-2-in-windows/
Octave (II)Entorno Gráfico octaveGUI similar al Octave (II) entorno Windows
líneas de comandos
Editor de texto(ficheros .m) últimos comandos
- Directorio trabajo( ) últimos comandos - Workspace- Últimos comandos
Ventanas y comando (I)Ventanas y comando (I)
Visualizador variables en uso (tipo y tamaño) workspace (matlab) Who, whos (matlab & octave)
GUIoctaveMATLAB7.1
Ventanas y comando (II)Ventanas y comando (II)
Visualizador variables en uso (tipo y tamaño)
Visualización delcontenido de variables
MATLAB7.1
Visualización gráficaVisualización gráfica
Ventana de gráficos x = 1:0.1:10;y=sin(x);plot(x,y)plot(x,y)
GUIoctaveMATLAB7.1
Editor de ficheros (M file)Editor de ficheros (M-file)
Ficheros de formato matlab para crear un programa (MATLAB) New M-files
x = 1:0.1:10;( )y=sin(x);
plot(x,y)
…y apertura de la ventanadel editor de texto….
…o teclear edit “nombre fichero”edit “nombre_fichero”en línea de comandos
Editor de ficheros (M file)Editor de ficheros (M-file)
Ficheros de formato matlab para crear un programa (GUIoctave)
Octave editor abierto por defecto
…o teclear edit “nombre fichero”edit “nombre_fichero”en línea de comandos
Editor de ficheros (M-file)( )
EDIT: PERMITE CREAR AL USUARIO DE MATLAB SUS PROPIOS programa_usuario.m
E t dEstos programas pueden ser:
• SCRIPTS
• FUNCIONES (creadas por el propio usuario o creadas por otros usuarios para formar parte de Matlab, FUNCIONES INTERNAS)
l
AyudaAyuda
Comando help Función similar en MATLAB y octave Sintaxis: help comando
help sin p>> help sin`sin' is a built-in function
-- Mapping Function: sin (X)Compute the sine for each element of X in radians.
See also: asin, sind, sinh
>> help \ >> help relopEjecutar help \ help relop>> help arith>> help slash
Ejecutar
Depuradorp
Muy útil a la hora de averiguar incorrecciones en programa Permite para en un punto dado (Breakpoints) Evaluar variables Avanzar paso a paso Avanzar hasta el siguiente breakpoint Avanzar hasta el siguiente breakpoint
Depurador en MATLAB Ejecución paso a pasoEjecución seguidap Ejecución seguida
….
visualización valor variables( d tó l d F9)(pasando con ratón o pulsando F9)
b k i t (Añ di /Q it F12 i h d l tó b l lí )breakpoint (Añadir/Quitar con F12 o pinchando con el ratón sobre la línea)
Depurador en GUIoctave Ejecución paso a pasoEjecución seguidap Ejecución seguida
….
visualización valor variables( l d Ct l E)(pulsando Ctrl+E)
b k i t (Añ di /Q it F12)breakpoint (Añadir/Quitar con F12)
VariablesVariables Espacios reservados en la memoria del ordenador en Espacios reservados en la memoria del ordenador en
los que se puede guardar y de los que se puede extraer una información determinada
Asignación: >> x = 1 Los nombres de variables deben empezar con unaLos nombres de variables deben empezar con una
letra pueden contener letras, números y sólo el símbolo “_”. existen diferencia entre mayúsculas y minúsculas.
>> Cadena = ‘Hola Mundo’;
Por defecto los valores numéricos los toma como datos d bl i ió (fl t t d 64 bit )
>> Cadena Hola Mundo ;
en doble precisión (flotantes de 64 bits)
VariablesVariablesC t i l d Caracteres especiales y reservados: [ ] Se utilizan para formar vectores y matrices ( ) Se usa en expresiones aritméticas Da prioridad de ( ) Se usa en expresiones aritméticas. Da prioridad de
ejecución a la expresión que encierra. , Separador de elementos de una matriz, argumentos
d f i d l i líde funciones y declaraciones en líneas con declaraciones múltiples
; Termina líneas de una matriz o es un separador de; Termina líneas de una matriz o es un separador de declaraciones
% Comentario
>> x=[1 2 3]>> x=[1, 2, 3];Ejecutar>> x=[1; 2; 3]>> x=[1; 2; 3];
VariablesVariables Algunas variables restringidas: Algunas variables restringidas:
ans: nombre de la variable por defecto. pi: π = 3.1415926 …… eps: ε= 2 2204e-016 el valor más pequeño entre dos números que el eps: ε 2.2204e 016, el valor más pequeño entre dos números que el
ordenador entiende. inf: ∞ NAN or nan: not-a-número
(1) ú 2 7183 exp(1): número e=2.7183 Comandos asociados a variables:
who: listado de variables definidas en Workspace whos: listado de variables y sus características whos: listado de variables y sus características clear: borra la asignación a todas las variables clear name: borra la variable name clc: borra la ventana de comandos.clc: borra la ventana de comandos. lf: borra la ventana de gráficos/figuras. format: formato para mostrar los datos
VisualizaciónVisualización
Matlab/octave cambia la presentación interna de un número cuando se escogen distintos formatos Sólo modifica su representación format long (16 dígitos) format short (5 dígitos + exponente) Format hex (formato hexadecimal)( )
>> format long;>> exp(1)
2 182818284 90Ejecutar
ans = 2.71828182845905>> format short;>> exp(1)
2 7183
>> help format
ans = 2.7183
Tipos de datosTipos de datos Estructura de datos escalares, vectores y matrices, y Númericos
Enteros (8,16,32,64 bits) con/sin signo; int8, uint8…. Reales con punto flotante
Simple precisión (32 bits) Doble precisión (64 bits) Formato IEEE754
Complejos (ej: x = 2 + 3i;) Complejos (ej: x = 2 + 3i;) Lógicos (logical en matlab/octave) Caracteres y cadenas (char en matlab/octave)
String es un vector de caracteres: ‘1’ no es igual a 1.String es un vector de caracteres: 1 no es igual a 1. Estructuras (struct): agrupaciones bajo un mismo nombre de datos de
naturaleza diferente Ej: s = struct('a',[1,4,7,2,9,3],'b','Jaime','c',[8 1 6;3 5 7; 4 9 2])j ( ,[ , , , , , ], , , ,[ ; ; ])
N b d Valor de los>> s.aEjecutar
Nombre de los campos
Valor de los campos
s.a
VectoresVectores
Creación explícita de vectores
>> x = [ 0 0.25*pi 0.5*pi 0.75*pi pi]x =
0 0 7854 1 5708 2 3562 3 1416Vector fila0 0.7854 1.5708 2.3562 3.1416
>>y=[0; 0.25*pi; 0.5*pi; 0.75*pi; pi] y = 0
fila
y = 00.78541.57082 3562
Vector columna2.3562
3.1416
Vectores: operacionesVectores: operaciones
Creación Ej: >>vector = [1 2 3 4]; vector_tras = [1; 2; 3;
4]; Concatenación
Ej: >>vector = [vectorA, vectorB]; Indexación (los vectores y matrices comienzan en 1)
Ej:>> vector(3)ans= 3
Vectores: funcionesVectores: funcionesx inicio:fin fil i i i i l dx = inicio:fin
x = inicio:incremento:fin
Crea un vector fila queempieza en inicial y va de 1 en 1 hasta el fin. Igual que arriba pero con un determinado incremento entre los elementosentre los elementos
x=randrand(1,nc) Crea vector fila de nc elementos aleatorios uniformemente distribuidos entre 0 y 1.
x=randrand(nf,1) Crea un vector columna de nf filas.
x = linspacelinspace(inicio,fin,número) Crea un vector fila desde el inicio hasta el fin generando un determinado número elementos
x = logspacelogspace(inicio,fin,número) Crea un vector fila logarítmicamente espaciado
lengthlength(x) Indica la longitud de un vector x
y = x’’ Transpuesta del vector x
dotdot(x,y),crosscross(x,y) Da un producto escalar y vectorial de los vectores x, y
li (0 2* i 4) d(3 1)>> x=linspace(0,2*pi,4) >> x=rand(3,1)>> x=-4:0.2:4>> x=logspace(1,4,4)
Ejecutar
MatricesMatrices V t t i d Vectores matrices de
1xn elementos. Escalarmatriz de 1x1
elementos Operaciones
Idénticas a las descritas Idénticas a las descritasen vectores Creación
Fil Filas se separan con ; Elementos de la
misma fila se separanpor comas o espaciosp p
Concatenación Indexación
Matrices (operaciones)Matrices (operaciones)Operacion Forma Matricial Elemento a Elemento
Suma a + b igual
Resta a b igualResta a – b igual
Multiplicación a * b a .* b
Divisiones a / b (a \ b) a ./ b
Potencias a^num a .^ num
Determinante det(a)
I i ( )Inversa inv(a)
Transpuesta a’
Ejemplos:Ejemplos:>> x = [1 2 3; 5 6 9];>> y = [4 5 6; 0 1 5];>> z = x .* y >> x*y’z = ans= 32 17
Ejecutarz ans 32 174 10 18 104 510 6 45
Matrices (funciones)Matrices (funciones)[a,b] or [a;b] Creación de matriz
blkdiag Construye una matriz cuadrada con matrices entrada de forma que las matrices de entrada queden almacenadas en su diagonal
size Tamaño de la matriz
cat Concatena matrices
diag Devuelve la diagonal de la matriz en forma de vector
horzcat Concatena matrices horizontalmente
magic Crea matrices cuadradas desde 1 a n2 de forma que cada fila y columna sumen lo mismo
ones Matriz de 1’sones Matriz de 1’s
rand Crea una matriz de números aleatorios distribuidos uniformemente.
repmat Crea una nueva matriz redistribuyendo el contenido de una en función de los índices de otra
vertcat Concatena matrices vecticalmente
zeros Matriz de 0’s
>> [nx,mx]=size(x) >>C=cat(1,x,y) >> D=cat(2,x,y)>> E=ones(3,2) >> F=rand(2,2) >> G=rand(2)
Ejecutar
Operaciones matemáticasOperaciones matemáticas
Matlab/Octave tiene operaciones sencillas Suma (+), resta (-), división normal(/), división
por izquierda (\), multiplicación (*), potencia (^) Orden de operaciones:p
1º: potencia 2º: multiplicación y división 2 : multiplicación y división 3º: sumas y restas
Ej: x=a^b*c+d ((a^b)*c)+d Ej: x=a b c+d ((a b) c)+d
Aplicación de matrices (I)Aplicación de matrices (I)
Resolución de sistemas de Ecuaciones Ejemplo: Vector desconocido o incógnita (x1, x2, x3)
3 x1 + 2x2 - x3 = 10 - x1 + 3x2 + 2x3 = 5 x 2x x = 1 x1 - 2x2 - x3 = -1
1
2
3
3 2 1 101 3 2 5
1 1 1 1
xxx
A x b
31 1 1 1x
El sistema se puede escribir como:
A bAx = b
Aplicación de matrices (II)Aplicación de matrices (II)
(1) U d l i (2) U d di i ió i i d(1) Usando la inversaAx = b
A-1 Ax = A-1 b
(2) Usando división por izquierda
MATLAB/OCTAVE (MATLAB/OCTAVE (DivisiónDivisión \\):):x = A-1 b
>> A = [3 2 -1; -1 3 2; 1 -1 -1];>> b = [10;5;-1];MATLAB/OCTAVE:MATLAB/OCTAVE:
>> A = [3 2 -1; -1 3 2; 1 -1 -1];
>> b [10;5;-1];>> x =A \ bx =
>> b = [10;5;-1];>> x = inv(A)*b
-2.00005.0000-6.0000Ej t x =
-2.00005 0000
Ejecutar
5.0000-6.0000
Funciones trigonométricasFunciones trigonométricas
>> help sin h l
Ejecutar
>> help cos
>> sin(0)>> sin(90)>> sin(90)>> sin(pi/2)