64
Matlab Aspectos básicos C. Vanhille, Universidad Rey Juan Carlos, Análisis Numérico en Acústica No Lineal (NANLA) 01/2017

Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Matlab

Aspectos básicos

C. Vanhille, Universidad Rey Juan Carlos, Análisis Numérico en Acústica No Lineal

(NANLA)

01/2017

Page 2: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Ventanas

• de Comandos

– Entrar datos (variables) y comandos, calcular

• Por ejemplo, el comando help que da información sobre los comandos que existen

• de Edición (script)

– Crear y editar programas en formato .m (fichero m)

• Botón Run o entrar el nombre del fichero (sin .m) en la ventana de comandos

• de Figuras

– Crear y editar figuras (gráficos)

C. Vanhille

Page 3: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Calculadora

• En la ventana de comandos

• Si no se especifica la variable a la que se le

asigna el resultado: variable ans• >> 1234-56

• ans =

• 1178

• >> a=1234-56

• a =

• 1178

• >> b=1234

• b =

• 1234

• >> c=56

• c =

• 56

• >> a=b-c

• a =

• 1178

C. Vanhille

Page 4: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Formatos

• Se utiliza un . para separar la parte entera de la parte decimal

• >> a=1.2

• a =

• 1.2000

• Doble precisión (64 bits) por defecto; simple precisión (32 bits) con el comando single; doble precisión con el comando double

• >> a=2

• a =

• 2

• >> b=single(a)

• b =

• 2

• c=double(b)

• c =

• 2

• >> whos

• Name Size Bytes Class Attributes

• a 1x1 8 double

• b 1x1 4 single

• c 1x1 8 double

C. Vanhille

Page 5: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Formatos

• El formato por defecto para representar en la pantalla emplea 4 dígitos decimales

• >> 1/3

• ans =

• 0.3333

• Para aumentar el número de dígitos decimales a 15 (en doble precisión; 7 en simple precisión), se utiliza format long

• >> format long

• >> 1/3

• ans =

• 0.333333333333333

• Para reducirlo al anterior, se emplea format short• >> format short

• >> 1/3

• ans =

• 0.3333

C. Vanhille

Page 6: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Formatos

• >> a=1111/3

• a =

• 370.3333

• >> b=single(a)

• b =

• single

• 370.3333

• >> whos

• Name Size Bytes Class Attributes

• a 1x1 8 double

• b 1x1 4 single

• >> format long

• >> a

• a =

• 3.703333333333333e+02

• >> b

• b =

• single

• 3.7033334e+02

C. Vanhille

Page 7: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Formatos

• Los comandos format short eng y format long eng permiten definir un número en notación científica (punto flotante: mantisa.10^exponente)

• >> format short eng

• >> 1/3

• ans =

• 333.3333e-003

• >> format long eng

• >> 1/3

• ans =

• 333.333333333333e-003

• >> format short eng

• >> 1111/3

• ans =

• 370.3333e+000

• >> format long eng

• >> 1111/3

• ans =

• 370.333333333333e+000

C. Vanhille

Page 8: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operaciones

• Se aplican a escalares, vectores y matrices

• Suma +, Resta –• >> 8+10

• ans =

• 18

• >> 8-10

• ans =

• -2

• Multiplicación *, división /• >> 2*5.2

• ans =

• 10.4000

• >> 15/8.4

• ans =

• 1.7857

• Opuesto -• >> -pi

• ans =

• -3.1416

C. Vanhille

Page 9: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operaciones

• Exponente• >> 2^5

• ans =

• 32

• División izquierda• >> 8\2

• ans =

• 0.2500

• Lo mismo que

• >> 2/8

• ans =

• 0.2500

C. Vanhille

Page 10: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operaciones

• Orden de prioridad: paréntesis, exponente,

opuesto, multiplicación y división, división

izquierda, suma y resta• >> a=(-4)^4

• a =

• 256

• >> b=-4^4

• b =

• -256

• >> c=1/(2+3)

• c =

• 0.2000

• >> d=1/2+3

• d =

• 3.5000

C. Vanhille

Page 11: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Variables

• Asignar valores a nombres de variable (almacena un valor en el sitio de la memoria reservado a ese nombre de variable), con =

• Si la variable no existe, se crea automáticamente durante la asignación

• El nombre puede contener letras, cifras y _ (barra baja)

• Tiene que empezar por una letra

• Distingue entre minúsculas y mayúsculas

• De varios tipos: escalares, arrays, datos numéricos, texto

C. Vanhille

Page 12: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Variables

• Conocer las variables existentes en el entorno:

who (nombre) y whos (nombre, tamaño, tipo)• >> who

• Your variables are:

• a ans b

• >> whos

• Name Size Bytes Class Attributes

• a 1x4 32 double

• ans 4x1 32 double

• b 1x1 8 double

• Limpiar el entorno parcial o totalmente• >> clear a

• >> whos

• Name Size Bytes Class Attributes

• ans 4x1 32 double

• b 1x1 8 double

• >> clear

• >> whos

C. Vanhille

Page 13: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Escalares

• El valor de la variable aparece en la pantalla al

escribir su nombre• >> a=52

• a =

• 52

• Si se pone ; al final de la fila de la asignación

de la variable, el cálculo se efectúa pero no

aparece en la pantalla• >> a=52;

C. Vanhille

Page 14: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)

• Array 1D: vector Array 2D: matriz

• Se definen con corchetes

• Por filas separadas por ;

• Los elementos de una fila se separan con , o con un espacio

• >> a=[1 2 3 4]

• a =

• 1 2 3 4

• >> b=[1;2;3;4]

• b =

• 1

• 2

• 3

• 4

• >> c=[1,2,3,4]

• c =

• 1 2 3 4C. Vanhille

Page 15: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)

• >> A=[1 2 3 4;5 6 7 8;9 10 11 12]

• A =

• 1 2 3 4

• 5 6 7 8

• 9 10 11 12

• >> B=[1,2,3,4;5,6,7,8;9,10,11,12]

• B =

• 1 2 3 4

• 5 6 7 8

• 9 10 11 12

C. Vanhille

Page 16: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)

• Los elementos se escriben y acceden directamente mediante paréntesis (fila,columna)

• >> a(1)=1

• a =

• 1

• >> a(4)=4

• a =

• 1 0 0 4

• >> a(2)=pi

• a =

• 1.0000 3.1416 0 4.0000

• >> a(2), a(3)

• ans =

• 3.1416

• ans =

• 0

C. Vanhille

Page 17: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)• >> A(3,5)=pi

• A =

• 0 0 0 0 0

• 0 0 0 0 0

• 0 0 0 0 3.1416

• >> A(1,3)=exp(1)

• A =

• 0 0 2.7183 0 0

• 0 0 0 0 0

• 0 0 0 0 3.1416

• >> A(2,1), A(1,3), A(3,5)

• ans =

• 0

• ans =

• 2.7183

• ans =

• 3.1416

• o por su índice recorriendo el array hacia abajo y la derecha

• >> A(2), A(7), A(15)

• ans =

• 0

• ans =

• 2.7183

• ans =

• 3.1416

C. Vanhille

Page 18: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)

• Transpuesta de un vector: ’• >> a'

• ans =

• 1.0000

• 3.1416

• 0

• 4.0000

• >> a

• a =

• 1.0000 3.1416 0 4.0000

• >> b=a'

• b =

• 1.0000

• 3.1416

• 0

• 4.0000

• >> whos

• Name Size Bytes Class Attributes

• a 1x4 32 double

• b 4x1 32 double

C. Vanhille

Page 19: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays (Vectores, Matrices)

• Transpuesta de una matriz: ’• >> A=[1 2 3 4;5 6 7 8;9 10 11 12]

• A =

• 1 2 3 4

• 5 6 7 8

• 9 10 11 12

• >> B=A'

• B =

• 1 5 9

• 2 6 10

• 3 7 11

• 4 8 12

• >> whos

• Name Size Bytes Class Attributes

• A 3x4 96 double

• B 4x3 96 double

C. Vanhille

Page 20: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays particulares

• Existen comandos para crear arraysparticulares

• Matriz cuadrada de ceros de dimensiones (n,n)• >> A=zeros(3)

• A =

• 0 0 0

• 0 0 0

• 0 0 0

• Matriz de ceros de dimensiones (n,m)• >> B=zeros(2,3)

• B =

• 0 0 0

• 0 0 0

C. Vanhille

Page 21: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Arrays particulares

• Matriz cuadrada de unos de dimensiones (n,n)• >> C=ones(3)

• C =

• 1 1 1

• 1 1 1

• 1 1 1

• Matriz de unos de dimensiones (n,m)• >> D=ones(2,4)

• D =

• 1 1 1 1

• 1 1 1 1

• >> E=ones(1,7)

• E =

• 1 1 1 1 1 1 1

• Matriz identidad de dimensiones (n,n)• >> F=eye(3)

• F =

• 1 0 0

• 0 1 0

• 0 0 1C. Vanhille

Page 22: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Vectores

• linspace(p1,p2,n) crea un vector de n valores espaciados de

forma lineal desde p1 hasta p2• >> linspace(3.5,4.5,6)

• ans =

• 3.5000 3.7000 3.9000 4.1000 4.3000 4.5000

• logspace(p1,p2,n) crea un vector de n valores espaciados de

forma logarítmica desde 10p1 hasta 10p2

• >> logspace(-2,2,8)

• ans =

• 0.0100 0.0373 0.1389 0.5179 1.9307 7.1969 26.8270 100.0000

• Por defecto, n=100

• length indica la dimensión un vector• >> a(4)=4

• a =

• 0 0 0 4

• >> length(a)

• ans =

• 4

C. Vanhille

Page 23: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Vectores

• El comando : puede usarse también para crear un vector con

valores desde p1 hasta p2 espaciados por el intervalo intp (p2

puede no ser el último valor)• >> 3.5:0.25:4.5

• ans =

• 3.5000 3.7500 4.0000 4.2500 4.5000

• >> 3.5:0.4:4.5

• ans =

• 3.5000 3.9000 4.3000

• Por defecto, intp=1• >> 1:10

• ans =

• 1 2 3 4 5 6 7 8 9 10

• intp puede ser negativo• >> 10:-1:1

• ans =

• 10 9 8 7 6 5 4 3 2 1

C. Vanhille

Page 24: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Vectores

• Para crear un vector columna, se transpone el vector fila• >> c=5:-1.3:2

• c =

• 5.0000 3.7000 2.4000

• >> d=(5:-1.3:2)'

• d =

• 5.0000

• 3.7000

• 2.4000

• Errores en los valores de los parámetros del comando generan

vectores vacíos• >> f=5:2

• f =

• Empty matrix: 1-by-0

• >> g=2:-1:5

• g =

• Empty matrix: 1-by-0

• >> whos

• Name Size Bytes Class Attributes

• f 1x0 0 double

• g 1x0 0 double C. Vanhille

Page 25: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Producto matricial

• Si A es una matrix de dimensiones (l,m) y B es una matriz de dimensiones (m,n), el producto matricial * genera una matriz de dimensiones (l,n)

• >> A=[1 2 3 4;5 6 7 8;9 10 11 12]

• A =

• 1 2 3 4

• 5 6 7 8

• 9 10 11 12

• >> B=[1 2;3 4;5 6;7 8]

• B =

• 1 2

• 3 4

• 5 6

• 7 8

• >> C=A*B

• C =

• 50 60

• 114 140

• 178 220

• >> whos

• Name Size Bytes Class Attributes

• A 3x4 96 double

• B 4x2 64 double

• C 3x2 48 double C. Vanhille

Page 26: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Producto matricial• Si A es una matriz cuadrada, el exponente matricial ^p genera

el producto matricial de A por si misma p veces• >> A=[1 2;5 6]

• A =

• 1 2

• 5 6

• >> B=A^5

• B =

• 4601 6010

• 15025 19626

• numelem y size indican el número de elementos y las dimensiones de una matriz

• >> A=[1 2 3; 44 -66 12]

• A =

• 1 2 3

• 44 -66 12

• >> numel(A)

• ans =

• 6

• >> size(A)

• ans =

• 2 3

• >> size(A,1)

• ans =

• 2

• >> size(A,2)

• ans =

• 3

C. Vanhille

Page 27: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Producto matricial• El comando spy permite visualizar la dispersión de una matriz

e indica el número de elementos no nulos• >> A=[1 2 3 0 0 3 0 5 60 1; 12 0 4 8 0 9 44 -66 12 0; 1 2 5 0 0 0 0 0 2 0; 5 0 4 0 0 9 2 -5 1 0]

• A =

• 1 2 3 0 0 3 0 5 60 1

• 12 0 4 8 0 9 44 -66 12 0

• 1 2 5 0 0 0 0 0 2 0

• 5 0 4 0 0 9 2 -5 1 0

• >> spy(A)

C. Vanhille

Page 28: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operar con los elementos de arrays

de uno en uno

• Para operar con los elementos de vectores o matrices de uno en

uno se emplea el punto . asociado al comando de la operación

que se lleva a cabo: .* ./ .^• >> a=[1 2 3 4]

• a =

• 1 2 3 4

• >> b=[5 6 7 8]

• b =

• 5 6 7 8

• >> a.*b

• ans =

• 5 12 21 32

• >> a.^3

• ans =

• 1 8 27 64

• >> a.^b

• ans =

• 1 64 2187 65536

C. Vanhille

Page 29: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operar con los elementos de arrays

de uno en uno

• Los vectores o las matrices deben tener las mismas

dimensiones• >> a=[1 2; 3 4]

• a =

• 1 2

• 3 4

• >> b=[5 6; 7 8]

• b =

• 5 6

• 7 8

• >> a.*b

• ans =

• 5 12

• 21 32

• >> a*b

• ans =

• 19 22

• 43 50

C. Vanhille

Page 30: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Operar con los elementos de arrays

de uno en uno

• >> a*inv(b)

• ans =

• 3.0000 -2.0000

• 2.0000 -1.0000

• >> a/b

• ans =

• 3.0000 -2.0000

• 2.0000 -1.0000

• >> a./b

• ans =

• 0.2000 0.3333

• 0.4286 0.5000

C. Vanhille

Page 31: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Cadenas de caracteres

• Las cadenas de caracteres alfanuméricas se

escriben entre ‘ ’ y su concatenación se realiza

mediante [ ]• >> alfc1='Rock&Roll'

• alfc1 =

• Rock&Roll

• >> alfc2=' ain''t noise pollution'

• alfc2 =

• ain't noise pollution

• >> alfc=[alfc1 alfc2]

• alfc =

• Rock&Roll ain't noise pollution

• >> whos

• Name Size Bytes Class Attributes

• alfc 1x31 62 char

• alfc1 1x9 18 char

• alfc2 1x22 44 char

C. Vanhille

Page 32: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Cadenas de caracteres

• Convertir un número en cadenas de caracteres:

comando num2str• >> num2str(2017)

• ans =

• 2017

• Concatenación de varias cadenas de caracteres:

comando strcat• >> nombreficherofigura=strcat('graf',num2str(2017),'.fig')

• nombreficherofigura =

• graf2017.fig

C. Vanhille

Page 33: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Elipsis

• El uso de […] permite omitir parte de una

asignación larga para continuar en otra línea de

comandos• >> a=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

• 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40]

• a =

• Columns 1 through 16

• 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

• Columns 17 through 32

• 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

• Columns 33 through 40

• 33 34 35 36 37 38 39 40

• >> whos

• Name Size Bytes Class Attributes

• a 1x40 320 double

• >> fras1=['La elipsis es una supresión de palabras de una frase que deberían estar presentes ' ...

• 'desde un punto de vista gramatical, pero que sin las cuales se comprende el sentido de la frase.']

• fras1 =

• La elipsis es una supresión de palabras de una frase que deberían estar presentes desde un punto de vista gramatical, pero

que sin las cuales se comprende el sentido de la frase.C. Vanhille

Page 34: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Números complejos• Parte imaginaria (i j *i *j i)• >> x1=3+5i, x2=2+7j

• x1 =

• 3.0000 + 5.0000i

• x2 =

• 2.0000 + 7.0000i

• >> x1+x2

• ans =

• 5.0000 +12.0000i

• >> whos

• Name Size Bytes Class Attributes

• ans 1x1 16 double complex

• x1 1x1 16 double complex

• x2 1x1 16 double complex

• Conjugado• >> x3=9+7*i

• x3 =

• 9.0000 + 7.0000i

• >> x4=x3'

• x4 =

• 9.0000 - 7.0000i

• >> whos

• Name Size Bytes Class Attributes

• x3 1x1 16 double complex

• x4 1x1 16 double complex C. Vanhille

Page 35: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Números complejos

• >> x1=3+5i, x2=2+7j, x3=9+7*i

• x1 =

• 3.0000 + 5.0000i

• x2 =

• 2.0000 + 7.0000i

• x3 =

• 9.0000 + 7.0000i

• >> a=[x1 x2 x3]

• a =

• 3.0000 + 5.0000i 2.0000 + 7.0000i 9.0000 + 7.0000i

• >> b=a'

• b =

• 3.0000 - 5.0000i

• 2.0000 - 7.0000i

• 9.0000 - 7.0000i

• >> whos

• Name Size Bytes Class Attributes

• a 1x3 48 double complex

• b 3x1 48 double complex

• x1 1x1 16 double complex

• x2 1x1 16 double complex

• x3 1x1 16 double complex

C. Vanhille

Page 36: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

• Numerosos tipos de figuras

• Comando plot (figura 2-D)

• Comando plot3, surf, mesh, waterfall (figura 3-D)

• Completar con otros comandos (xlabel, ylabel, title,

legend) o directamente editando parte de la figura

desde le ventana

• Existen muchos tipos de trazos, marcadores, colores

C. Vanhille

Page 37: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

• Ejemplos• >> clear

• t=0:0.2:2;

• u=exp(t)+t.^2;

• figure

• plot(t,u)

• title('u(t)')

• xlabel('t')

• ylabel('u')

• grid

C. Vanhille

Page 38: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

• Ejemplos• >> for ix=1:101

• x(ix)=-10+(ix-1)*(20/100);

• fdex(ix)=sin(x(ix));

• end;

• figure

• plot(x,fdex,'-or')

• xlabel('x')

• ylabel('y = fdex')

C. Vanhille

Page 39: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

• Ejemplos (ecuaciones paramétricas)• >> clear

• t=0:0.1:9*pi;

• x=cos(t);

• y=sin(t);

• plot3(x,y,t)

• xlabel('cos(t)')

• ylabel('sen(t)')

• zlabel('t')

C. Vanhille

Page 40: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

• Ejemplos• >> clear

• for ix=1:201

• x(ix)=-2+(ix-1)*(4/200);

• for iy=1:101

• y(iy)=-1+(iy-1)*(2/100);

• fdexey(ix,iy)=x(ix)^3+y(iy)^3;

• end;

• end;

• figure

• surf(x,y,fdexey')

• xlabel('x')

• ylabel('y')

• zlabel('z = fdexey')

C. Vanhille

Page 41: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

El comando figure(n) permite abrir la n-ésima ventana de figuras (se abre una nueva si no se especifica n)

>> figure(4)

El comando hold on para seguir añadiendo gráficas en la misma ventana de figuras hasta que se entre el comando hold off

>> v=exp(t)-t.^2;

figure

plot(t,u,'-k')

xlabel('t')

hold on

plot(t,v,'or')

title('u(t) y v(t)')

ylabel('u ; v')

hold off

C. Vanhille

Page 42: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

Se pueden representar gráficamente varias funciones en una misma ventana de figuras añadiendo vectores en el comando plot

>> figure

plot(t,u,'-k',t,v,'or')

xlabel('t')

title('u(t) y v(t)')

ylabel('u ; v')

C. Vanhille

Page 43: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Figuras

El comando subplot(m, n, p) crea en la ventana de figuras activa m filas y n columnas de ventanas más pequeñas (numeradas hacia la derecha y abajo) y dibuja en la ventana número p la gráfica ordenada por el siguiente comando de dibujo

>> figure

subplot(3,4,3)

plot(t,u)

title('u(t)')

xlabel('t')

ylabel('u')

subplot(3,4,5)

plot(t,v)

title('v(t)')

xlabel('t')

ylabel('v')

subplot(3,4,12)

surf(x,y,fdexey')

xlabel('x')

ylabel('y')

zlabel('z = fdexey')C. Vanhille

Page 44: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Help• El comando help permite profundizar en las posibilidades de

un comando o en comandos relativos a una temática• >> help sqrt

• sqrt Square root.

• sqrt(X) is the square root of the elements of X. Complex

• results are produced if X is not positive.

• See also sqrtm, realsqrt, hypot.

• Reference page for sqrt

• Other functions named sqrt

• >> help elfun

• Elementary math functions.

• ……..

• >> help elmat

• Elementary matrices and matrix manipulation.

• ……..

• El comando lookfor permite buscar ayuda sobre comandos que

incluyen el texto buscado en su ayuda• >> lookfor loop

• break - Terminate execution of WHILE or FOR loop.

• continue - Pass control to the next iteration of FOR or WHILE loop.

• parfor - Execute for loop in parallel on workers in parallel pool

• figloopfigures - creates figures for figloop-tutorial.rpt

• dspFilterRealizedInBasicElemsAlgLoopErrFcnCallback - used by REALIZEMDL

C. Vanhille

Page 45: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Bucles

– Comando for (basado en el comando :)• >> clear

• for i=10:-1:1

• x(i)=2+(i-1)*5;

• end

• >> x

• x =

• 2 7 12 17 22 27 32 37 42 47

C. Vanhille

Page 46: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

– Comando while• >> i=1;

• while i <= 10

• x(i)=2+(i-1)*5;

• i=i+1;

• end

• >> x

• x =

• 2 7 12 17 22 27 32 37 42 47

• >> i=0;

• while (1)

• i=i+1;

• if i > 10, break, end

• x(i)=2+(i-1)*5;

• end

• >> x

• x =

• 2 7 12 17 22 27 32 37 42 47

C. Vanhille

Page 47: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Condiciones• >> if x(9) > x(8)

• x(10)=0;

• end

• >> x

• x =

• 2 7 12 17 22 27 32 37 42 0

• >> if x(10) ~= 0

• x(1)=pi;

• else

• x(1)=exp(1);

• end

• >> x

• x =

• 2.7183 7.0000 12.0000 17.0000 22.0000 27.0000 32.0000 37.0000 42.0000 0

C. Vanhille

Page 48: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• >> if x(1) > 3

• x(2)=pi;

• elseif x(1) == 3

• x(2)=2*pi;

• elseif x(1) <= 2

• x(2)=3*pi;

• else

• x(2)=10*pi;

• end

• >> x

• x =

• 2.7183 31.4159 12.0000 17.0000 22.0000 27.0000 32.0000 37.0000 42.0000 0

C. Vanhille

Page 49: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Expresiones de relaciones y lógicas

== ~= > >= < <= && ||

• 1: verdadero 0: falso• for ix=1:10

• if ix==2 || ix==4

• ix

• end

• end

• ix =

• 2

• ix =

• 4

C. Vanhille

Page 50: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• >> iy=3

• iy =

• 3

• >> for ix=1:4

• if ix==2 && iy==3

• ix

• iy

• end

• end

• ix =

• 2

• iy =

• 3

• >> iy=5

• iy =

• 5

• >> for ix=1:4

• if ix==2 && iy==3

• ix

• iy

• end

• end C. Vanhille

Page 51: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Programación modular, rutinas y funciones

– Un algoritmo puede fraccionarse en rutinas y

funciones que se ejecutan llamándolas desde el

programa principal .m

• Rutinas .m

• Son módulos del programa que se escriben aparte para

tener una mejor visualización de sus comandos y un

control específico sobre ellas

• Las variables creadas en esta rutina .m aparecen en el

entorno Matlab, ocupan un espacio en la memoria y

pueden ser reutilizadas fuera de este módulo a posteriori

C. Vanhille

Page 52: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica• Funciones

• Existen muchas funciones disponibles en Matlab para

efectuar operaciones matemáticas, como cos, sin, abs,

sqrt, …

• Un usuario puede construir sus propias funciones .m

para llevar a cabo una tarea específica y llamarlas desde

un script .m o desde la ventana de comandos

• Una función requiere parámetros de entrada y al menos

una variable de salida

• Las variables creadas en esta función .m no aparecen en

el entorno Matlab, no ocupan ningún espacio en la

memoria y no pueden ser reutilizadas fuera de este

módulo a posteriori, a no ser que sean declaradas como

parámetros de la funciónC. Vanhille

Page 53: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Se escriben los comandos siguientes en el

fichero vectoryexpo.m

• valordey es la variable de salida

• numelemvect y expon son los parámetros de entrada

• vectoryexpo es el nombre de la función, el que se utiliza

para ejecutar la función

• function valordey = vectoryexpo(numelemvect,expon)

• for i=numelemvect:-1:1

• valordey(i)=(i*pi)^expon;

• end

C. Vanhille

Page 54: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• A continuación se escriben los comandos

siguientes en la ventana de comandos (o desde

otro script .m) para ejecutar la función

vectoryexpo• >> numelemvect=5;

• >> expon=4;

• >> mivector=vectoryexpo(numelemvect,expon)

• mivector =

• 1.0e+04 *

• 0.0097 0.1559 0.7890 2.4937 6.0881

C. Vanhille

Page 55: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Una función puede tener más de una variable

de salida, como la siguiente guardada en el

fichero buscamaxymindiag.m• function [valormaxdiag, valormindiag] = buscamaxymindiag(X)

• %Esta función busca el valor máximo y el valor mínimo de entre los elementos de la diagonal de la matriz X

• vecdiag=diag(X);

• valormaxdiag=max(vecdiag);

• valormindiag=min(vecdiag);

C. Vanhille

Page 56: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Se puede ejecutar con una matriz A existente

• Nótese que vecdiag, variable interna de la función, no

aparece en el entorno de variables de Matlab, no ocupa

espacio después de la ejecución de la función• >> A=[1 2 3; 44 -66 12; 10 20 52]

• A =

• 1 2 3

• 44 -66 12

• 10 20 52

• >> whos

• Name Size Bytes Class Attributes

• A 3x3 72 double

• >> [mimaxdiagA, mimindiagA]=buscamaxymindiag(A)

• mimaxdiagA =

• 52

• mimindiagA =

• -66

• >> whos

• Name Size Bytes Class Attributes

• A 3x3 72 double

• mimaxdiagA 1x1 8 double

• mimindiagA 1x1 8 double

C. Vanhille

Page 57: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica• Sin embargo, si a la misma función, ahora nombrada

conwhosbuscamaxymindiag.m, se le añade el comando

whos que se ejecuta antes de la salida de la función,

aparece la variable interna vecdiag en el entorno de

variables de Matlab, lo que demuestra que ocupa un

espacio de memoria que hay que tener en cuenta

• function [valormaxdiag, valormindiag] = conwhosbuscamaxymindiag(X)

• %Esta función busca el valor máximo y el valor mínimo de entre los elementos de la diagonal de la matriz X

• vecdiag=diag(X);

• valormaxdiag=max(vecdiag);

• valormindiag=min(vecdiag);

• whos

• 'fin de la función'

C. Vanhille

Page 58: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• >> [mimaxdiagA, mimindiagA]=conwhosbuscamaxymindiag(A)

• Name Size Bytes Class Attributes

• X 3x3 72 double

• valormaxdiag 1x1 8 double

• valormindiag 1x1 8 double

• vecdiag 3x1 24 double

• ans =

• fin de la función

• mimaxdiagA =

• 52

• mimindiagA =

• -66

C. Vanhille

Page 59: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica• Un parámetro de una función puede ser otra

función, como en la siguiente guardada en el

fichero sumadefunciones.m (el comando feval(nombre,x)

evalúa la función, cuyo nombre se escribe con una cadena de caracteres,

con su argumento igual a x)• function valorsumaf1f2 = sumadefunciones(a, nombre_de_f1, b, nombre_de_f2)

• %Esta función calcula la suma de f1 en a y de f2 en b

• valorsumaf1f2=feval(nombre_de_f1,a)+feval(nombre_de_f2,b);

• Siendo las funciones guardadas funcion1.m y

funcion2.m • function valorf1 = funcion1(x)

• %Esta función calcula el valor que toma la función f1(x) en x

• valorf1=x^2-2;

• function valorf2 = funcion2(x)

• %Esta función calcula el valor que toma la función f2(x) en x

• valorf2=x^2+x-1;

• La ejecución de la función sumadefunciones es• >> valorsumaf1f2=sumadefunciones(4, 'funcion1', 8, 'funcion2')

• valorsumaf1f2 =

• 85

C. Vanhille

Page 60: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Cuando la función parámetro tiene más de una

variable de salida, se selecciona la variable

desde la función principal como en el ejemplo

siguiente guardado en el fichero

ponderamaxymindiag.m• function valorcombo = ponderamaxymindiag(a, b, c, nombre_de_f, X, Y)

• %Esta función calcula la combinación lineal valorcombo del valor máximo de entre los elementos de la diagonal de la

matriz X y del valor

• %mínimo de entre los elementos de la diagonal de la matriz Y, calculados con la función nombre_de_f, con los pesos

• %a, b y c

• [maxX,minX]=feval('buscamaxymindiag',X);

• [maxY,minY]=feval('buscamaxymindiag',Y);

• valorcombo=a+b*maxX+c*minY;

C. Vanhille

Page 61: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• La ejecución de la función sumadefunciones es• >> A=[1 2 3; 44 -66 12; 10 20 52]

• B=A.^(3)

• A =

• 1 2 3

• 44 -66 12

• 10 20 52

• B =

• 1 8 27

• 85184 -287496 1728

• 1000 8000 140608

• mivalorcombo=ponderamaxymindiag(2,4,5,'buscamaxymindiag',A,B)

• mivalorcombo =

• -1437270

C. Vanhille

Page 62: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Programación científica

• Asignación manual de variables• >> a=input('velocidad del sonido (m/s): ')

• velocidad del sonido (m/s): 340

• a =

• 340

• >> whos

• Name Size Bytes Class Attributes

• a 1x1 8 double

C. Vanhille

Page 63: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Matlab Simbólico…

(en otro fichero)

C. Vanhille

Page 64: Matlab Aspectos básicos€¦ · Arrays (Vectores, Matrices) •Transpuesta de un vector: ’ • >> a' • ans = • 1.0000 • 3.1416 • 0 • 4.0000 • >> a • a = • 1.0000

Bibliografía

• Matlab 7, getting started guide, MathWorks, 2010.

• Métodos numéricos para ingenieros, Chapra S. C.,

Canale R. P., McGraw-Hill, 2015.

• Análisis numérico y visualización gráfica con Matlab,

Nakamura S., Pearson Education, 1997.

• Modélisation numérique en mécanique: introduction

et mise en pratique, Vanhille C., Lavie A., Campos-

Pozuelo C., Hermès Science Publications / Lavoisier,

2007.

• Métodos numéricos con Matlab, Mathews J. H., Fink

K. D., Prentice Hall, 2000.C. Vanhille