1Intromatlabk

33
Laboratorio de Computación Científica I d MATLAB I d MATLAB Primer semestre Introduccn a MATLAB Introduccn a MATLAB y OCTAVE y OCTAVE y OCTAVE y OCTAVE

description

nmjklkjhkhkj

Transcript of 1Intromatlabk

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)

Otros operadores comunesOtros operadores comunes

>>x=[1 -4 5 6 -9];>> abs(x)

Ejecutar

>> abs(x)>> sign(x)>>sqrt(-x(2))