2. EME technologies
2/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Generar un nuevo script y guardarlo con el nombre de hello_world.m
• Añadir las sentencias:
>> % Primer script del proyecto
>> display(‘Hello, world!’)
• Ejecutarlo. Para ello existen dos métodos:
1. Mediante el botón Run.
2. Escribiendo el nombre del script (hello_world.m) en el
Command Window (debe estar en el path!)
El primer código MATLAB: Hello world!
3. EME technologies
3/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Generar un nuevo script y guardarlo con el nombre “hello_world.m”
• Añadir las sentencias:
>> % Primer script del proyecto
>> display(‘Hello, world!’)
• Ejecutarlo. Para ello existen dos métodos:
1. Mediante el botón Run.
2. Escribiendo el nombre del script (hello_world.m) en el
Command Window (debe estar en el path!)
El primer código MATLAB: Hello world!
5. EME technologies
5/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Son variables que pueden tomar uno o más valores numéricos (lo
que se denomina array).
• Son las variables con las cuales se realizan todas las operaciones
matemáticas.
• Para crear una variable nueva “a” con el valor 1, basta con escribir:
>> a = 1
• Ello genera la variable “a”, con valor 1, y se visualiza en el explorador
de variables.
Variables de valor numérico: Definicion
6. EME technologies
6/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Son variables que pueden tomar uno o más valores numéricos (lo
que se denomina array).
• Son las variables con las cuales se realizan todas las operaciones
matemáticas.
• Para crear una variable nueva “a” con el valor 1, basta con escribir:
>> a = 1
• Ello genera la variable “a”, con valor 1, y se visualiza en el explorador
de variables o Workspace.
Variables de valor numérico: Definicion
Nombre de la variable
Valor que toma
Linea a ejecutar
Resultado de
la ejecución
7. EME technologies
7/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Entre dos o más variables es posible realizar operaciones matemáticas
elementales.
Variables de valor numérico: Operaciones elementales
Operación Notación
Suma c = a + b
Resta c = a – b
Producto c = a * b
División c = a / b
Exponente c = a^b
8. EME technologies
8/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Operación con paréntesis: siguen las reglas matemáticas.
Ejemplo.
Cálculo de la expresión 𝑑 =
𝑎+𝑏
𝑐−𝑎
2
𝑎𝑐
, donde
a = 1, b = 2, c = 3.
Variables de valor numérico: Operaciones elementales
9. EME technologies
9/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Operación con paréntesis: siguen las reglas matemáticas.
Ejemplo.
Cálculo de la expresión 𝑑 =
𝑎+𝑏
𝑐−𝑎
2
𝑎𝑐
, donde
a = 1, b = 2, c = 3.
Variables de valor numérico: Operaciones elementales
10. EME technologies
10/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Operación con paréntesis: siguen las reglas matemáticas.
Ejemplo.
Cálculo de la expresión 𝑑 =
𝑎+𝑏
𝑐−𝑎
2
𝑎𝑐
, donde
a = 1, b = 2, c = 3.
Variables de valor numérico: Operaciones elementales
Inicialización de las variables
Resultado numérico
11. EME technologies
11/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• MATLAB trae prácticamente todas las funciones matemáticas que
existen.
Propiedades de un número: abs(x), floor(x), round(x), sign(x),
ceil(x), mod(x,a),…
Raíces: sqrt(x)
Trigonométricas: sin(x), cos(x), tan(x), sinh(x), cosh(x), tanh(x),
asin(x), acos(x), atan(x), atan2(y,x),…
Exponenciales: exp(x), log(x), log10(x), log2(x)
Pero esto es sólo un ejemplo… MATLAB incluye todas las funciones
elementales que podemos necesitar.
Cuando necesitemos una función en concreto, la web de MATLAB
www.mathworks.com incluye todo tipo de documentación.
Variables de valor numérico: Funciones matemáticas
12. EME technologies
12/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Cuando sabemos qué función necesitamos, pero no tenemos claro
exactamente qué resultado produce o qué variables de entrada
necesita, la ayuda de MATLAB resulta muy potente.
• Se invoca mediante el comando help.
Por ejemplo, para buscar información de la función sin(x),
escribimos:
>> help sin
Variables de valor numérico: La ayuda de MATLAB
13. EME technologies
13/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Cuando sabemos qué función necesitamos, pero no tenemos claro
exactamente qué resultado produce o qué variables de entrada
necesita, la ayuda de MATLAB resulta muy potente.
• Se invoca mediante el comando help.
Por ejemplo, para buscar información de la función sin(x),
escribimos:
>> help sin
Variables de valor numérico: La ayuda de MATLAB
Definición de la función
Funciones relacionadas
14. EME technologies
14/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Son variables que sólo pueden tener dos estados:
Verdadero (true) ó 1
Falso (false) ó 0.
• Son de vital importancia, ya que controlarán el flujo del código
Si algo es verdadero, realiza cierta acción, mientras que si es
falso, realizamos otra acción.
• Se definen asignándoles el valor true o false.
>> a = true
>> b = false
Variables lógicas: Definicion
15. EME technologies
15/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
• Si toman el valor 1 o 0, ¿Por qué no usamos variables numéricas?
Porque MATLAB trabaja con las variables lógicas de forma
especial.
• Realmente, en ocasiones una variable numérica (de valor 0 o 1)
puede desempeñar la misma tarea que una lógica, pero es una
buena costumbre distinguir entre ellas.
Variables lógicas: Definición
Icono de variable lógica MATLAB sólo las asigna 1 byte.
16. EME technologies
16/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables lógicas: Operaciones entre variables lógicas
• Los tres operadores más comunes entre una o más variables lógicas
son los siguientes:
Negación (~): Devuelve el valor contrario de una variable. El
contrario de true es false, y viceversa.
Operador AND (&&): Operación entre dos variables. Devuelve el
valor true si ambas son true. De lo contrario, devuelve el valor
false.
Operador OR (||): Operación entre dos variables. Devuelve el
valor true si una de ellas es true. De lo contrario, devuelve el
valor false.
a b AND OR
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
17. EME technologies
17/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables lógicas: Operaciones entre variables lógicas
• Para escribir una operación más compleja entre varias variables
lógicas, se emplean paréntesis para describir el orden en el cual se
realizan.
• Si a = true y b = false, por ejemplo, se pueden realizar las siguientes
operaciones:
>> ~a false
>> a && b false
>> a || b true
>> (a && b) || (a && ~b) true
18. EME technologies
18/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables lógicas: Generación a partir de variables numéricas
• A partir de dos variables numéricas puede construirse una variable
lógica.
• La variable lógica se obtiene de comparar ambas variables.
• Los operadores típicos entre dos variables numéricas a y b son:
Igualdad: >> a == b
No igualdad: >> a ~= b
Mayor que: >> a > b
Mayor o igual que: >> a >= b
Menor que: >> a < b
Menor o igual que: >> a <= b
• Todas las operaciones anteriores tienen como resultado una variable
lógica.
19. EME technologies
19/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables lógicas: Generación a partir de variables numéricas
• Ejemplos. A partir de las variables a = 1 y b = 2
>> c = a > b false
>> c = a == b false
>> c = a ~= b true
>> c = (~(a == b)) || (a > b) true
20. EME technologies
20/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Definición
• Se trata de una variable a la cual se le asignan varios valores
numéricos de forma ordenada.
• Para crear un vector cuyas componentes sean 1,2,3,4, y 5, se realiza
de la siguiente forma:
>> vector = [ 1 , 2 , 3 , 4 , 5 ]
• El comando anterior genera una variable llamada vector que contiene
los cinco números.
21. EME technologies
21/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Definición
• Una vez creado un vector, podemos acceder a una componente
poniendo su posición entre paréntesis.
• Para acceder a la cuarta componente del vector se escribe:
>> vector = [12,21,34,14,500]
>> vector(4)
ans =
14
• Para extraer parte del vector, por ejemplo desde la segunda
componente hasta la cuarta, se escriben separados por dos puntos :
>> vector = [12,21,34,14,500]
>> vector(2:4)
ans =
[21,34,14]
22. EME technologies
22/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Definición
• Una vez creado un vector, podemos acceder a una componente
poniendo su posición entre paréntesis.
• Para acceder a la cuarta componente del vector se escribe:
>> vector = [12,21,34,14,500]
>> vector(4)
ans =
14
• Para extraer parte del vector, por ejemplo desde la segunda
componente hasta la cuarta, se escriben separados por dos puntos :
>> vector = [12,21,34,14,500]
>> vector(2:4)
ans =
[21,34,14]
23. EME technologies
23/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Definición
• Una vez creado un vector, podemos acceder a una componente
poniendo su posición entre paréntesis.
• Para acceder a la cuarta componente del vector se escribe:
>> vector = [12,21,34,14,500]
>> vector(4)
ans =
14
• Para extraer parte del vector, por ejemplo desde la segunda
componente hasta la cuarta, se escriben separados por dos puntos :
>> vector = [12,21,34,14,500]
>> vector(2:4)
ans =
[21,34,14]
24. EME technologies
24/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Definición
• Los vectores en MATLAB no tienen tamaño fijo.
• Por ejemplo. Creamos un vector de cinco componentes:
>> vector = [3,2,6,4,10]
• Si se trata de acceder a la posición 6, MATLAB devuelve el siguiente
error:
>> vector(6)
Index exceeds matrix dimensions.
• No obstante, podemos añadir un nuevo valor a la posición 6.
>> vector(6) = 25
ans =
[3,2,6,4,10,25]
• De esta forma, podemos incrementar progresivamente el tamaño de
un vector. Pero no es recomendable.
25. EME technologies
25/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Funciones aplicadas a un vector
• Es posible aplicar funciones a un vector para obtener información de
las variables que contienen. Las más destacadas son:
length(x): Devuelve el tamaño del vector x.
norm(x): Devuelve el módulo del vector x
sum(x): Suma todas las componentes del vector x.
prod(x): Multiplica todas las componentes del vector x.
max(x): Devuelve el número más grande que contiene.
min(x): Devuelve el número más pequeño que contiene.
sort(x): Devuelve el vector con las componentes ordenadas de
menor a mayor.
mean(x): Devuelve la media de las componentes
unique(x): Devuelve el vector ordenado de menor a mayor, y
elimina aquellas componentes que estén repetidas.
TODAS las funciones aplicadas a un número vistas anteriormente
(abs, floor, sin, cos, tan, exp) pueden usarse, y las realiza
componente a componente.
26. EME technologies
26/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Funciones aplicadas a un vector
• Ejemplos. Definimos el vector x = [7,3,7,0,-1]
>> length(x) ans = 5
>> norm(x) ans = 10.3923
>> sum(x) ans = 16
>> prod(x) ans = 0
>> max(x) ans = 7
>> min(x) ans = -1
>> sort(x) ans = [-1,0,3,7,7]
>> mean(x) ans = 3.2
>> unique(x) ans = [-1,0,3,7]
>> sin(x) ans = [0.6570,0.1411,0.6570,0,-0.8415]
>> sign(x) ans = [1,1,1,0,-1]
>> abs(x) ans = [7,3,7,0,1]
27. EME technologies
27/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Operaciones
• Es posible realizar todo tipo de operaciones matemáticas con vectores.
Producto por un escalar. Multiplicar un vector por un número multiplica
una a una sus componentes por dicho número.
>> vector = [2,4,3,6,7]
>> 2*[2,4,3,6,7]
ans =
[4,8,6,12,14]
Suma de vectores. Dos vectores distintos pueden sumarse si poseen el
mismo tamaño
>> a = [1,2,3]
>> b = [4,5,6]
>> c = a + b
ans =
[4,7,9]
Suma de un número a un vector. Sumar un número a un vector, le suma
ese número a cada componente.
>> a = [1,2,3]
>> a + 2
ans =
[3,4,5]
28. EME technologies
28/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Producto/División de vectores?
• ¿Qué realizan la operación producto (*) división (/) o potencia (^) ?
• Son caracteres reservados para operaciones con matrices.
• Si queremos multiplicar, dividir, o elevar dos vectores componente a componente
hay que añadir un punto delante al operador para obtener el producto (.*), división
(./), y potencia (.^).
• En la universidad no se estudian productos componente a componente, si no
producto escalar o vectorial, entonces, ¿Para qué se necesita?:
Desde el punto de vista computacional sí es útil.
• Ejemplos. Generamos dos vectores a = [1,0,4], y b = [6,8,4]
Producto componente a componente
>> c = a.*b c = [6,0,16]
División componente a componente
>> c = a./b c = [0.166667, 0 ,1]
Elevar cada componente a un número (por ejemplo las de b al cuadrado)
>> c = b.^2 c = [36,64,16]
Elevar cada componente de un vector a otra componente de otro vector
>> c = b.^a c = [6,1,256]
29. EME technologies
29/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Productos especiales
• ¿Y el producto escalar o vectorial? Tienen funciones específicamente creadas para
ello
• Producto escalar: la función dot(a,b) realiza el producto escalar de a con b.
(Recordatorio: Ԧ𝑎 · 𝑏 = 𝑎1 𝑏1 + 𝑎2 𝑏2 + 𝑎3 𝑏3 + … = Ԧ𝑎 𝑏 cos(𝑎, 𝑏))
Ejemplo. Creando a = [5,0,3] y b = [1,4,-3]
>> dot(a,b) ans = -4
¿Es la única forma? El producto escalar es la suma del producto de las
componentes de a y b.
>> sum(a.*b) ans = -4
• Producto vectorial: la función cross(a,b) devuelve el producto vectorial de a con b.
(¡Sólo tiene sentido con vectores de dimensión 3!)
Ejemplo. Creando a = [3,-4,5] y b = [1,0,0]
>> c = cross(a,b) c = [0,5,4]
El resultado del producto vectorial es perpendicular a los dos vectores
originales: El producto escalar con ellos debería ser 0
>> dot(a,c) ans = 0
30. EME technologies
30/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Otros métodos de generar vectores
• Mediante los dos puntos. Genera un vector que empieza en cierto valor inicial,
termina en un valor final, y el salto entre componentes es un cierto paso. La
notación es la siguiente:
>> valor_inicial : paso : valor_final
Ejemplo. Vector que comienza en cero, termina en 9, y existe un salto entre
variables de valor 2
>> v = 0:2:9
ans =
[0,2,4,6,8]
Otro ejemplo. Un vector que comienza en 0, termina en 𝟐𝝅 y realiza saltos de 𝝅/𝟐
>> v = 0 : pi/2 : 2*pi
ans =
[0, 1.57, 3.14, 4.71, 6.28]
• Mediante la función linspace. Igualmente genera un vector que empieza en cierto
valor y termina en otro valor, pero en lugar de introducir el paso, se introduce la
cantidad de puntos que se desean.
>> linspace( valor_inicial , valor_final , Numero_puntos )
>> v = linspace( 0 , 9 , 5)
ans = [ 0, 2.25, 4.5, 6.75, 9 ]
31. EME technologies
31/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Otros métodos de generar vectores
• Mediante los dos puntos. Genera un vector que empieza en cierto valor inicial,
termina en un valor final, y el salto entre componentes es un cierto paso. La
notación es la siguiente:
>> valor_inicial : paso : valor_final
Ejemplo. Vector que comienza en cero, termina en 9, y existe un salto entre
variables de valor 2
>> v = 0:2:9 >> v = 1:2:9
ans = ans =
[0,2,4,6,8] [1,3,5,7,9]
Otro ejemplo. Un vector que comienza en 0, termina en 𝟐𝝅 y realiza saltos de 𝝅/𝟐
>> v = 0 : pi/2 : 2*pi
ans =
[0, 1.57, 3.14, 4.71, 6.28]
• Mediante la función linspace. Igualmente genera un vector que empieza en cierto
valor y termina en otro valor, pero en lugar de introducir el paso, se introduce la
cantidad de puntos que se desean.
>> linspace( valor_inicial , valor_final , Numero_puntos )
>> v = linspace( 0 , 9 , 5)
ans = [ 0, 2.25, 4.5, 6.75, 9 ]
Valores inicial, final, y paso no son coherentes
32. EME technologies
32/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Otros métodos de generar vectores
• Mediante los dos puntos. Genera un vector que empieza en cierto valor inicial,
termina en un valor final, y el salto entre componentes es un cierto paso. La
notación es la siguiente:
>> valor_inicial : paso : valor_final
Ejemplo. Vector que comienza en cero, termina en 9, y existe un salto entre
variables de valor 2
>> v = 0:2:9 >> v = 1:2:9
ans = ans =
[0,2,4,6,8] [1,3,5,7,9]
Otro ejemplo. Un vector que comienza en 0, termina en 𝟐𝝅 y realiza saltos de 𝝅/𝟐
>> v = 0 : pi/2 : 2*pi
ans =
[0, 1.57, 3.14, 4.71, 6.28]
• Mediante la función linspace. Igualmente genera un vector que empieza en cierto
valor y termina en otro valor, pero en lugar de introducir el paso, se introduce la
cantidad de puntos que se desean.
>> linspace( valor_inicial , valor_final , Numero_puntos )
>> v = linspace( 0 , 9 , 5)
ans = [ 0, 2.25, 4.5, 6.75, 9 ]
Valores inicial, final, y paso no son coherentes
El paso será 𝒑 =
𝟗−𝟎
𝟓
= 2.25
33. EME technologies
33/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Concatenación de vectores
• Concatenar se refiere a colocar un vector detrás de otro.
• Para realizar esta operación en MATLAB, se colocan los vectores a unir entre
corchetes.
>> v_unido = [ vec1, vec2, vec3 ]
• Los vectores a unir no tienen porqué tener el mismo tamaño
• Ejemplo.
>> vec1 = [1,2,3]
>> vec2 = [0,1,3,0]
>> vec3 = [9,8]
>> v_unido = [vec1,vec2,vec3]
>> v_unido =
[1,2,3,0,1,3,0,9,8]
34. EME technologies
34/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Vectores de valores numéricos: Concatenación de vectores
• Concatenar se refiere a colocar un vector detrás de otro.
• Para realizar esta operación en MATLAB, se colocan los vectores a unir entre
corchetes.
>> v_unido = [ vec1, vec2, vec3 ]
• Los vectores a unir no tienen porqué tener el mismo tamaño
• Ejemplo.
>> vec1 = [1,2,3]
>> vec2 = [0,1,3,0]
>> vec3 = [9,8]
>> v_unido = [vec1,vec2,vec3]
>> v_unido =
[1,2,3,0,1,3,0,9,8]
35. EME technologies
35/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• ¡Todo lo contado anteriormente es mentira!
• No existen ni las variables tipo número, ni los vectores.
• Para MATLAB todo son matrices (MAT-LAB = Matrix laboratory)
Un número es una matriz 1x1.
Un vector es una matriz fila (1xN), o una matriz columna (Nx1).
• Definiendo a = 1 y b = [1,2,3], en el explorador de variables (workspace):
36. EME technologies
36/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• ¡Todo lo contado anteriormente es mentira!
• No existen ni las variables tipo número, ni los vectores.
• Para MATLAB todo son matrices (MAT-LAB = Matrix laboratory)
Un número es una matriz 1x1.
Un vector es una matriz fila (1xN), o una matriz columna (Nx1).
• Definiendo a = 1 y b = [1,2,3], en el explorador de variables (workspace):
37. EME technologies
37/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Son variables que almacenan NxM números ordenados en N filas y M columnas.
• Para generar la matriz
A =
1 5
−4 0
se introduce de forma similar a un vector: Entre corchetes, y por filas,
separando las filas por punto y coma (;).
>> A = [1 , 5 ; -4 , 0]
A =
1 5
-4 0
38. EME technologies
38/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Son variables que almacenan NxM números ordenados en N filas y M columnas.
• Para generar la matriz
A =
1 5
−4 0
se introduce de forma similar a un vector: Entre corchetes, y por filas,
separando las filas por punto y coma (;).
>> A = [1 , 5 ; -4 , 0]
A =
1 5
-4 0
39. EME technologies
39/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Son variables que almacenan NxM números ordenados en N filas y M columnas.
• Para generar la matriz
A =
1 5
−4 0
se introduce de forma similar a un vector: Entre corchetes, y por filas,
separando las filas por punto y coma (;).
>> A = [1 , 5 ; -4 , 0]
A =
1 5
-4 0
40. EME technologies
40/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Acceder a un elemento de la matriz: A partir de la matriz anterior
>> A = [1 , 5 ; -4 , 0]
• Para acceder al elemento situado en la fila 1 y columna 2, existen dos posibilidades
Escribir entre paréntesis en primer lugar la fila, y en segundo lugar la
columna
>> A(1,2)
ans =
5
MATLAB ordena internamente la matriz por columnas (las dos primeras
posiciones las ocupa la columna 1, y las dos segundas posiciones las ocupa la
columna 2)
A =
1 5
−4 0
En este caso, el elemento en la fila 1 y columna 2 sería el tercer elemento
que almacena MATLAB, y se podría acceder:
>> A(3)
ans =
5
41. EME technologies
41/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Acceder a un elemento de la matriz: A partir de la matriz anterior
>> A = [1 , 5 ; -4 , 0]
• Para acceder al elemento situado en la fila 1 y columna 2, existen dos posibilidades
Escribir entre paréntesis en primer lugar la fila, y en segundo lugar la
columna
>> A(1,2)
ans =
5
MATLAB ordena internamente la matriz por columnas (las dos primeras
posiciones las ocupa la columna 1, y las dos segundas posiciones las ocupa la
columna 2)
A =
1 5
−4 0
En este caso, el elemento en la fila 1 y columna 2 sería el tercer elemento
que almacena MATLAB, y se podría acceder:
>> A(3)
ans =
5
Primera columna Segunda columna
42. EME technologies
42/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• Acceder a un elemento de la matriz: A partir de la matriz anterior
>> A = [1 , 5 ; -4 , 0]
• Para acceder al elemento situado en la fila 1 y columna 2, existen dos posibilidades
Escribir entre paréntesis en primer lugar la fila, y en segundo lugar la
columna
>> A(1,2)
ans =
5
MATLAB ordena internamente la matriz por columnas (las dos primeras
posiciones las ocupa la columna 1, y las dos segundas posiciones las ocupa la
columna 2)
A =
1 5
−4 0
En este caso, el elemento en la fila 1 y columna 2 sería el tercer elemento
que almacena MATLAB, y se podría acceder:
>> A(3)
ans =
5
Primera columna Segunda columna
Esto es demasiado lioso, ¿No creéis?
Es más recomendable esta opción
43. EME technologies
43/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• De la misma forma, para acceder a una submatriz obtenida de seleccionar un rango
de filas y un rango de columnas se realiza mediante los dos puntos.
Ejemplo. De una matriz 4x4 se extraen las filas 2 y 3, y las columnas 3 y 4:
>> A = [1,0,1,0;2,-1,0,5;-3,4,3,0;0,0,0,1]
A =
1 0 1 0
2 -1 0 5
-3 4 3 0
0 0 0 1
>> A( 2:3 , 3:4)
ans =
0 5
3 0
• Para extraer una determinada fila o columna completa se selecciona dicha fila o
columna y el argumento libre se deja con dos puntos (:)
Ejemplo. De la matriz anterior, extraer la fila 3 y la columna 2
>> A ( 3 , : ) >> A ( : , 2 )
ans = ans =
-3 4 3 0 0
-1
3
44. EME technologies
44/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• De la misma forma, para acceder a una submatriz obtenida de seleccionar un rango
de filas y un rango de columnas se realiza mediante los dos puntos.
Ejemplo. De una matriz 4x4 se extraen las filas 2 y 3, y las columnas 3 y 4:
>> A = [1,0,1,0;2,-1,0,5;-3,4,3,0;0,0,0,1]
A =
1 0 1 0
2 -1 0 5
-3 4 3 0
0 0 0 1
>> A( 2:3 , 3:4)
ans =
0 5
3 0
• Para extraer una determinada fila o columna completa se selecciona dicha fila o
columna y el argumento libre se deja con dos puntos (:)
Ejemplo. De la matriz anterior, extraer la fila 3 y la columna 2
>> A ( 3 , : ) >> A ( : , 2 )
ans = ans =
-3 4 3 0 0
-1
3
1
2
3
4
1 2 3 4
45. EME technologies
45/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• De la misma forma, para acceder a una submatriz obtenida de seleccionar un rango
de filas y un rango de columnas se realiza mediante los dos puntos.
Ejemplo. De una matriz 4x4 se extraen las filas 2 y 3, y las columnas 3 y 4:
>> A = [1,0,1,0;2,-1,0,5;-3,4,3,0;0,0,0,1]
A =
1 0 1 0
2 -1 0 5
-3 4 3 0
0 0 0 1
>> A( 2:3 , 3:4)
ans =
0 5
3 0
• Para extraer una determinada fila o columna completa se selecciona dicha fila o
columna y el argumento libre se deja con dos puntos (:)
Ejemplo. De la matriz anterior, extraer la fila 3 y la columna 2
>> A ( 3 , : ) >> A ( : , 2 )
ans = ans =
-3 4 3 0 0
-1
4
1
2
3
4
1 2 3 4
46. EME technologies
46/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Definición
• En conclusión, para cada una de las dos posiciones de una matriz se pueden utilizar
tres opciones:
Seleccionar un valor. Por ejemplo el elemento 3.
Seleccionar un rango de valores. Por ejemplo desde 1 hasta 4 sería 1:4
Seleccionar todos los valores posibles. Mediante los dos puntos ( : )
A(3) 3 6 -5 0 2 3
A(1:4) 3 6 -5 0 2 3
A(:) 3 6 -5 0 2 3
47. EME technologies
47/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Funciones aplicadas a matrices
• Todas las funciones vistas para números, sirven también para matrices
>> A = [1.3, 5.4 ; -1 , 0]
A =
1.3 5.4
-1.3 0.2
>> floor(A)
ans
1 5
-2 0
• Las funciones vistas para vectores las aplica por columnas. Es decir:
La función sum(A) devuelve un vector fila cuya componente 2 es la suma de
las componentes de la segunda columna de la matriz
>> A = [1 , 3 ; 5 , 6]
A =
1 3
5 6
>> sum(A)
ans =
6 9
48. EME technologies
48/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Funciones aplicadas a matrices
• Todas las funciones vistas para números, sirven también para matrices
>> A = [1.3, 5.4 ; -1 , 0]
A =
1.3 5.4
-1.3 0.2
>> floor(A)
ans
1 5
-2 0
• Las funciones vistas para vectores las aplica por columnas. Es decir:
La función sum(A) devuelve un vector fila cuya componente 2 es la suma de
las componentes de la segunda columna de la matriz
>> A = [1 , 3 ; 5 , 6]
A =
1 3
5 6
>> sum(A)
ans =
6 9
Las realiza número a número
49. EME technologies
49/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Funciones aplicadas a matrices
• Todas las funciones vistas para números, sirven también para matrices
>> A = [1.3, 5.4 ; -1 , 0]
A =
1.3 5.4
-1.3 0.2
>> floor(A)
ans
1 5
-2 0
• Las funciones vistas para vectores las aplica por columnas. Es decir:
La función sum(A) devuelve un vector fila cuya componente 2 es la suma de
las componentes de la segunda columna de la matriz
>> A = [1 , 3 ; 5 , 6]
A =
1 3
5 6
>> sum(A)
ans =
6 9
Las realiza número a número
50. EME technologies
50/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Funciones aplicadas a matrices
• También hay funciones orientadas a matrices, pero como se ha visto también pueden
aplicarse a vectores o números.
size(A): Devuelve un vector con el número de filas y columnas que contiene la
matriz
Si se aplica a un vector devolverá el valor [1,N] si es un vector fila, o el
valor [N,1] si es vector columna.
transpose(A): Devuelve la matriz transpuesta.
¡Serviría para pasar de vector fila, a vector columna!
inv(A): Devuelve la matriz inversa
¡Sólo si la matriz es cuadrada!
det(A): Devuelve el determinante de la matriz.
¡Sólo si la matriz es cuadrada!
eig(A): Devuelve los autovalores de la matriz.
¡Sólo si la matriz es cuadrada!
51. EME technologies
51/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• Producto por un escalar: Multiplicar una matriz por un número multiplica una a una
sus componentes por dicho número.
>> A = [1, 2, 3 ; 0, 3, 0]
A =
1 2 3
0 3 0
>> 3*A
ans =
3 6 9
0 9 0
• Suma y resta de matrices: Puede realizarse siempre que las dos matrices posean el
mismo tamaño.
>> A = [1,2 ; 4,5] >> B = [0,1 ; 1,0 ]
A = B =
1 2 0 1
4 5 1 0
>> A + B >> A – 2*B
ans = ans =
1 3 1 0
5 5 2 5
52. EME technologies
52/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• Producto matricial: La operación
A * B
no multiplica componente a componente, si no que realiza el producto
matricial de las matrices A y B.
Este tipo de producto sólo puede realizarse si el número de columnas de A es
igual al número de filas de B.
𝐴 𝑛 𝑎 𝑥 𝑚 𝑎 ∗ 𝐵 𝑛 𝑏 𝑥 𝑚 𝑏 = 𝐶[𝑛 𝑎 𝑥 𝑚 𝑏]
>> A = [1, 0, 2; 0, 0, 3] >> A*B
A = ans =
1 0 2 6 1
0 0 3 9 0
>> B = [0, 1; 5, 4; 3, 0] >> B*A
B = ans =
0 1 0 0 3
5 4 5 0 22
3 0 3 0 6
53. EME technologies
53/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• Producto matricial: La operación
A * B
no multiplica componente a componente, si no que realiza el producto
matricial de las matrices A y B.
Este tipo de producto sólo puede realizarse si el número de columnas de A es
igual al número de filas de B.
𝐴 𝑛 𝑎 𝑥 𝑚 𝑎 ∗ 𝐵 𝑛 𝑏 𝑥 𝑚 𝑏 = 𝐶[𝑛 𝑎 𝑥 𝑚 𝑏]
>> A = [1, 0, 2; 0, 0, 3] >> A*B
A = ans =
1 0 2 6 1
0 0 3 9 0
>> B = [0, 1; 5, 4; 3, 0] >> B*A
B = ans =
0 1 0 0 3
5 4 5 0 22
3 0 3 0 6
54. EME technologies
54/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• Podemos realizar operaciones componente a componente igual que en vectores, con
el operador (.*)
>> A = [1, 0; 4, 5; 0, 3]
A =
1 0
4 5
0 3
>> B = [ 0, 1; 3, 5; 9, 3]
B =
0 1
3 5
9 3
>> A .* B
ans =
0x1=0 0x1=0
4x3=12 5x5=25
0x9=9 3x3=9
55. EME technologies
55/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• En cuanto a la división, existen dos tipos.
Mediante la barra slash (/), la cual se llama right matrix divide, y calcula la
siguiente cantidad.
A / B = A*inv(B)
Esta función no es muy útil.
Mediante la barra backslash (), la cual se llama left matrix divide, y calcula la
siguiente cantidad.
A B = inv(A) * B
Esta función es muy útil. Si se considera el sistema A*x = B, su resultado:
x = inv(A)*B Lo calcularemos con esta función: x = AB
¿Por qué no hacer directamente inv(A)*B? Porque AB no calcula la matriz
inversa, si no que resuelve el sistema por otros métodos más eficientes
computacionalmente.
Ejemplo. Resolver el sistema Ax = B con
>> A = [1, 2 ; 3, 0] >> B = [0 ; 1]
>> x = AB B =
ans = 0
[0.333, -0.16667] 1
56. EME technologies
56/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• En cuanto a la división, existen dos tipos.
Mediante la barra slash (/), la cual se llama right matrix divide, y calcula la
siguiente cantidad.
A / B = A*inv(B)
Esta función no es muy útil.
Mediante la barra backslash (), la cual se llama left matrix divide, y calcula la
siguiente cantidad.
A B = inv(A) * B
Esta función es muy útil. Si se considera el sistema A*x = B, su resultado:
x = inv(A)*B Lo calcularemos con esta función: x = AB
¿Por qué no hacer directamente inv(A)*B? Porque AB no calcula la matriz
inversa, si no que resuelve el sistema por otros métodos más eficientes
computacionalmente.
Ejemplo. Resolver el sistema Ax = B con
>> A = [1, 2 ; 3, 0] >> B = [0 ; 1]
>> x = AB ¿Qué resultado da A*x?
ans = [0.333, -0.16667] >> A*x = [0,1] = B
57. EME technologies
57/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• De esta forma, para la resolución de un sistema lineal de ecuaciones, siempre
usaremos la barra .
A*x = B ? x = AB
• Para que un sistema tenga solución única, deberá estar completamente determinado,
lo que implica que el determinante de la matriz A de coeficientes deberá tener un
determinante distinto de cero.
• Si se trata de resolver un sistema con infinitas soluciones o indeterminado, la
solución no es válida (aunque MATLAB por defecto devuelve algún valor).
• Ejemplo.
>> A = [ 1 , 2 ; 2, 4] >> B = [ 0 ; 1]
A = B =
1 2 0
2 4 1
>> det(A)
ans =
0
>> x = AB
Warning: Matrix is singular to working precision
58. EME technologies
58/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Operaciones con matrices
• Podemos realizar operaciones componente a componente igual que en vectores, con
el operador (./)
>> A = [1, 0; 4, 5; 0, 3]
A =
1 0
4 5
0 3
>> B = [ 0, 1; 3, 5; 9, 3]
B =
0 1
3 5
9 3
>> A ./ B
ans =
1/0=Inf 0x1 = 0
4/3=1.33 5/5 = 1
0/9=0 3/3 = 1
59. EME technologies
59/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Concatenación
• Igual que se pueden concatenar vectores, es decir, colocar uno detrás de otro,
pueden concatenarse matrices.
• La forma de realizarse en MATLAB es igual, colocando las matrices a unir entre
corchetes, y separándolas:
Por coma (,) cuando deseamos poner una seguida de la otra
Por punto y coma (;) cuando deseamos poner una debajo de la otra
• Ejemplo.
>> A = [1 , 2 ; 0 , 4] >> C = [A , B]
A = C =
1 2 1 2 5 6
3 -4 0 4 3 -4
>> B = [ 5 , 6 ; 0 , 7 ] >> C = [A ; B]
B = C =
5 6 1 2
0 4 0 4
5 6
3 -4
60. EME technologies
60/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Concatenación
• Igual que se pueden concatenar vectores, es decir, colocar uno detrás de otro,
pueden concatenarse matrices.
• La forma de realizarse en MATLAB es igual, colocando las matrices a unir entre
corchetes, y separándolas:
Por coma (,) cuando deseamos poner una seguida de la otra
Por punto y coma (;) cuando deseamos poner una debajo de la otra
• Ejemplo.
>> A = [1 , 2 ; 0 , 4] >> C = [A , B]
A = C =
1 2 1 2 5 6
0 4 0 4 3 -4
>> B = [ 5 , 6 ; 0 , 7 ] >> C = [A ; B]
B = C =
5 6 1 2
3 -4 0 4
5 6
3 -4
A B
A
B
61. EME technologies
61/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Matrices de valores numéricos: Funciones para generar matrices
• Es posible generar matrices de distintas formas:
zeros(n,m): Genera una matriz con n filas y m columnas en la que todos sus
valores valen cero.
ones(n,m): Genera una matriz con n filas y m columnas en la que todos sus
valores valen uno.
eye(n): Genera una matriz identidad con n filas y n columnas
rand(n,m): Genera una matriz con n filas y m columnas en las que sus valores
son números aleatorios entre 0 y 1.
62. EME technologies
62/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables de caracteres: Definición
• Las variables tipo string almacenan cualquier carácter alfanumérico.
• Para definir un string, se incluye su contenido entre apóstrofes (‘).
>> str = ‘mi primer string’
• Desde el punto de vista del almacenamiento de datos, trabaja con ellos de forma
idéntica a un vector, es decir, para acceder a la letra en la posición 4, se escribe:
>> str(4)
ans =
p
• Concatenar strings significa colocar uno detrás del otro, lo cual se realiza
colocándolos entre corchetes por orden
>> str1 = ‘EME’
>> str2 = ‘TECHNOLOGIES’
>> [str1,’ ‘,str2]
ans =
EME TECHNOLOGIES
63. EME technologies
63/16Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Variables de caracteres: Funciones útiles
• Para comparar dos strings, existen dos posibilidades en función de los requisitos.
La función strcmp(str1,str2) compara los strings str1 y str2, devolviendo el valor
true si son exactamente iguales, y false en caso contrario.
>> strcmp(‘e’,’E’)
ans =
0
La función strcmpi(str1,str2) compara los strings str1 y str2, devolviendo el valor
true si son iguales sin tener en cuenta las mayúsculas, y false en caso
contrario.
>> strcmpi(‘e’,’E’)
ans =
1
• Para convertir una variable numérica en un string cuyo contenido sea el valor de la
variable, se emplea la función num2str(var) (numerical to string).
>> num2str(2)
ans = ‘2’
• Del mismo modo, para convertir un string con contenido numérico a una variable
numérica cuyo valor es el contenido del string se utiliza la función str2num(str).
>> str2num( ‘2.345’ )
ans = 2.345
64. EME technologies
Introducción a MATLAB – Ingeniería aplicada a la competición20/02/2016
Fin.
Siguiente tema: “Gestión del flujo del
código.”