introducciÓn a la programaciÓn en matlab © carlos a. lázaro carrascosa. laboratorio de...

41
INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB

Upload: josefina-rivero-castro

Post on 25-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

INTRODUCCIÓN A LA PROGRAMACIÓN EN

MATLAB

Page 2: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2

Introducción a MatLab

• MATLAB: MATrix LABoratory

• Programa de simulación

• Ayuda potente

• Entorno de trabajo

Page 3: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 3

Entorno de trabajo

• PATH BROWSER

• EDITOR Y DEBUGGER

• WORKSPACE BROWSER

• FORMATOS DE SALIDA

Introducción a MatLab

Page 4: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 4

Vectores y Matrices

Generalidades

• No hace falta establecer su tamaño de antemano

• Definición: A=[1 2 3; 4 5 6; 7 8 9]

• Transposición: A’• Inversión: inv(A)

• Vector fila: A=[1 2 3]• Vector columna A=[1;2;3]

Page 5: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 5

Vectores y Matrices

Operaciones

• Suma (+)• Resta (-)• Multiplicación (*)• Traspuesta (‘)• Potenciación (^)• Producto a nivel de elemento (.*)• División a nivel de elemento (./)

Page 6: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 6

Vectores y Matrices

Tipos base

• Reales Ej. 5.0

• Complejos Ej. 3 + 4j

• Cadenas de caracteres Ej. ‘cadena’

Page 7: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 7

Vectores y Matrices

Matrices predefinidas

• eye(4)• zeros(3,5)• zeros(4)• ones(2)• linspace(x1,x2,n)• rand(3)• hilb(3)

Page 8: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 8

Funciones

• Devolución múltiple de valores

• Funciones sin argumentos no llevan paréntesis

• No son palabras reservadas del lenguaje

• Número de argumentos variable

Page 9: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 9

• Argumentos: expresiones u otras llamadas

• Argumentos: pasados por valor

• Ejemplos (modo escalar): sin(x), cos(x), exp(x),abs(x)...

• Ejemplos (vectores): min(x), sum(x), mean(x)...

• Ejemplos (matrices):lu(A), det(A), qr(A), norm(A), norm(A,1)...

Funciones

Page 10: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 10

Elementos adicionales

• Gráficos: Funcionesplot(), pie(), ginput(), plot3(), surf()...

• Llamadas al sistema: Operador !

• Comentarios: Operador %

Otras características

Page 11: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 11

• Bifurcaciones y bucles:if, switch, for, while, break, try...catch...end

• Entrada / Salida: input, disp

• Definición de funciones:function[valores de retorno] = name(argumentos)

• Funciones: No hay return.

• Varios: estructuras, fopen(), fclose(), fprintf(), fscanf(), exportación, argumentos variables, creación de interfaces (guide)...

Programación

Page 12: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 12

Programa de computación numérica. Funciones incluidas + Toolboxes: data analysis,

signal processing, optimization. Posee gran cantidad de funciones para gráficos 2-D

y 3-D y animación. Ambiente similar a UNIX. Aparece un prompt para ingresar sentencias

MatLab. Cuando se pulsa <ENTER> la sentencia se ejecuta y

aparece un nuevo prompt. Si una sentencia culmina con punto y coma ( ; ), no

se muestran resultados (sí se hacen los cálculos).

Introducción

Page 13: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 13

Para comenzar, teclear alguno de los siguientes comandos:

helpwin, helpdesk, or demo

>> a=5;

>> b=a/2

b =

2.5000

>>

Comienzo

Page 14: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 14

Los nombres SON case-sensitive.

Pueden contener hasta 63 caracteres.

Deben comenzar con una letra seguida de letras, dígitos o underscores (_).

Nombres de Variables

Page 15: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 15

ans Nombre por defecto de los resultados.pi Valor de = 3.14159265…eps la menor distancia entre números

floatinf InfinitoNaN No es un número, por ejemplo: 0/0i ó j i = j = raíz cuadrada de -1realmin El menor número real positivo utilizable.realmax El mayor número real positivo utilizable.

Variables Especiales

Page 16: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 16

Operadores y Asignación

Potencia ^ or .^ a^b or a.^b

Multiplicación * or .* a*b or a.*b

División / or ./ a/b or a./b

or \ or .\ b\a or b.\a

OBSERVAR: 56/8 = 8\56

Suma + a + b

Resta - a - b

Asignación = a = b (asigna b a a)

Page 17: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 17

>> prompt... Continúa la sentencia en la línea siguiente, Separa sentencias y datos% Comentarios; (1) elimina la salida

(2) separador de filas en una matriz : rango

Otros símbolos

Page 18: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 18

MATLAB trata a todas las variables como matrices.

Los Vectores son matrices con sólo una fila O una columna.

Los Escalares son matrices con una fila Y una columna.

Matrices

Page 19: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 19

Un escalar puede crearse en MATLAB como sigue:

>> a_value=23

a_value =

23

Escalares

Page 20: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 20

Una matriz con sólo una fila se llama vector:

>> rowvec = [12 , 14 , 63]

rowvec =

12 14 63

Vectores

Page 21: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 21

Una matriz con sólo una columna se llama vector columna (observar los punto y comas):

>> colvec = [13 ; 45 ; -2]

colvec =

13 45 -2

Vectores columna

Page 22: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 22

Una matriz se crea de la siguiente manera (observar las comas y los “punto y coma”). Las comas pueden reemplazarse por espacios.

>> matrix = [1 , 2 , 3 ; 4 , 5 ,6 ; 7 , 8 , 9]

matrix = 1 2 3 4 5 6 7 8 9

Matrices

Page 23: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 23

Extracción de una Sub-Matriz

Una parte de una matriz puede extraerse y almacenarse como una matriz más pequeña. La sintaxis es:

submatriz = matriz(r1:r2, c1:c2);

r1 : r2 desde fila r1 hasta fila r2c1 : c2 desde columna c1 hasta columna c2

Page 24: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 24

Extracción de un vector columna de una matriz. Primero la creamos:

>> matriz = [1,2,3; 4,5,6; 7,8,9]

matriz =

1 2 3 4 5 6 7 8 9

Y ahora extraemos la columna 2 de la matriz recién creada:

>> col_2 = matriz(:,2)

col_2 =

2 5 8

Otras Sub-Matrices

Page 25: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 25

Extracción de un vector columna de una matriz. Primero la creamos:

>> matriz = [1,2,3; 4,5,6; 7,8,9]

matriz =

1 2 3 4 5 6 7 8 9

Y ahora extraemos la fila 2 de la matriz recién creada:

>> fil = matrix(2:2 , 1:3)

fil = 4 5 6

Otras Sub-Matrices

Page 26: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 26

Lectura de Datos desde Archivos

MATLAB lee el archivo completo y almacena todos sus datos en una matriz:

>> load mydata.dat;% loads file into matrix.% The matrix may be a scalar, a vector, or a % matrix with multiple rows and columns. The% matrix will be named mydata.

>> size (mydata) % size will return the number% of rows and number of% columns in the matrix

>> length (myvector) % length will return the% total no. of elements

in% myvector

Page 27: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 27

Gráficos con MATLAB

MATLAB grafica un vector versus otro. El primero será la abscisa (x) y el segundo la ordenada (y). Deben tener la misma longitud.

MATLAB también grafica un vector versus su propio índice, el que será la abscisa (x).

Dados dos vectores, “time” y “dist” :

>> plot (time, dist) % plotting versus time >> plot (dist) % plotting versus index

Page 28: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 28

Hay muchos comandos totalmente configurable para agregar anotaciones (“annotations”) a los gráficos, etiquetas de ejes, título, leyendas…

>> % To put a label on the axes we would use: >> xlabel ('X-axis label')

>> ylabel ('Y-axis label')

>> % To put a title on the plot, we would use:

>> title ('Title of my plot')

Gráficos con MATLAB

Page 29: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 29

Cómo graficar una columna versus otra:

>> first_vector = mydata(:, 1);% Primera columna

>> second_vector = mydata(:, 2);% Segunda columna

>> % y ahora graficamos

>> plot(first_vector, second_vector)

Gráficos con MATLAB

Page 30: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 30

Otros comandos útiles

who Listado de variables whos Listado de variables con su tamaño. help Ej.: >> help sqrt (Ayuda sobre sqrt) lookfor Ej.: >> lookfor sqrt

Busca la palabra sqrt en m-files what Ex:>> what a:

Listado de archivos MATLAB en a: clear Borra TODAS las variables del

workspace clear x y

Borra las variables x e y del workspace

clc Borra la ventana de comandos

Page 31: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 31

what List all m-files in current directory dir List all files in current directory ls Same as dir type test Display test.m in command window delete test Delete test.m cd a: Change directory to a: chdir a: Same as cd pwd Show current directory which test Display current directory path to

test.m

Otros comandos útiles

Page 32: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 32

MATLAB supports six relational operators.

Less Than <

Less Than or Equal <=

Greater Than >

Greater Than or Equal >=

Equal To ==

Not Equal To ~=

Operadores relacionales

Page 33: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 33

MATLAB supports three logical operators.

not ~ % highest precedence

and & % equal precedence with or

or | % equal precedence with and

Operadores lógicos

Page 34: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 34

MATLAB also supports some logical functions.xor (exclusive or) Ex: xor (a, b) Where a and b are logical expressions. The xor operator

evaluates to true if and only if one expression is true and the other is false. True is returned as 1, false as 0.

any(x) returns 1 if any element of x is nonzeroall(x) returns 1 if all elements of x are

nonzeroisnan(x) returns 1 at each NaN in xisinf(x) returns 1 at each infinity in xfinite(x) returns 1 at each finite value in x

Funciones lógicas

Page 35: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 35

Formatos para mostrar números

MATLAB supports 8 formats for outputting numerical results.format long 16 digits

format short e 5 digits plus exponent

format long e 16 digits plus exponent

format hex hexadecimal

format bank two decimal digits

format + positive, negative or zero

format rat rational number (215/6)

format short default display

Page 36: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 36

Estructuras de Selección

An if - elseif - else structure in MATLAB. Note that elseif is one word.

if expression1 %(es verdadera)% execute these commands

elseif expression2 %(es verdadera)% execute these commands

else %(por defecto)% execute these commands

end

Page 37: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 37

A for loop in MATLAB for x = array for x = 1: 0.5 : 10

% execute these commands

end

A while loop in MATLAB while expression

while x <= 10% execute these commands

end

Estructuras de Repetición

Page 38: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 38

Suma Escalar - Matriz

>> a=3;>> b=[1, 2, 3;4, 5, 6]b = 1 2 3 4 5 6

>> c = b+a % Suma a a cada elemento de bc = 4 5 6 7 8 9

Page 39: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 39

>> a=3;>> b=[1, 2, 3;4, 5, 6]b = 1 2 3 4 5 6

>> c = b – a % Resta a de cada elemento de bc = -2 -1 0 1 2 3

Resta Escalar - Matriz

Page 40: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 40

>> a=3;

>> b=[1, 2, 3; 4, 5, 6]

b =

1 2 3

4 5 6

>> c = a * b % Multiply each element of b by a

c =

3 6 9

12 15 18

Multiplicación Escalar - Matriz

Page 41: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 2 Introducción a MatLab MATLAB: MATrix

© Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. 41

>> a=3;

>> b=[1, 2, 3; 4, 5, 6]

b =

1 2 3

4 5 6

>> c = b % Divide each element of b by a

c =

0.3333 0.6667 1.0000

1.3333 1.6667 2.0000

División Escalar - Matriz