View
975
Download
5
Embed Size (px)
Citation preview
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJALa Universidad Católica de Loja
ESCUELA DE INGENIERÍA CIVIL
ÁREA DE FÍSICA Y MATEMÁTICAS
2009
ESTRUCTURA BÁSICA DEDATOS
3.1. Variables.3.1.1. Uso del punto y coma (;).3.1.2. Uso de la coma (,).3.1.3. Comentario (%).3.1.4. Puntos Suspensivos (…).
3.2. Vectores y Matrices.3.2.1. Escalar.3.2.2. Vector fila o columna.3.2.3. Matrices.
3.2.3.1. Matrices especiales.3.3. Operaciones con matrices.
3.3.1.Operadores aritméticos.3.4. Tipos de datos.
3.4.1. Números reales de doble precisión.3.4.2. Otros tipos de variables: integer, float y logical.3.4.3. Números complejos: Función complex.
3.5. Strings.3.6. Cargar, almacenar, leer, imprimir y abrir datos del Workspace.
3.1. Variables.3.1.1. Uso del punto y coma (;).3.1.2. Uso de la coma (,).3.1.3. Comentario (%).3.1.4. Puntos Suspensivos (…).
3.2. Vectores y Matrices.3.2.1. Escalar.3.2.2. Vector fila o columna.3.2.3. Matrices.
3.2.3.1. Matrices especiales.3.3. Operaciones con matrices.
3.3.1.Operadores aritméticos.3.4. Tipos de datos.
3.4.1. Números reales de doble precisión.3.4.2. Otros tipos de variables: integer, float y logical.3.4.3. Números complejos: Función complex.
3.5. Strings.3.6. Cargar, almacenar, leer, imprimir y abrir datos del Workspace.
Matlab no requiere declarar ni dimensionar variables, las variables se auto-
declaran al iniciarlas.
Una variable es un nombre que se da a una entidad numérica, que puede ser
una matriz, un vector o un escalar. El valor de esa variable, e incluso el tipo de
entidad numérica que representa, puede cambiar a lo largo de una sesión de
MATLAB o a lo largo de la ejecución de un programa. La forma más normal de
cambiar el valor de una variable es colocándola a la izquierda del operador de
asignación (=).
VariablesMatlab no requiere declarar ni dimensionar variables, las variables se auto-
declaran al iniciarlas.
Una variable es un nombre que se da a una entidad numérica, que puede ser
una matriz, un vector o un escalar. El valor de esa variable, e incluso el tipo de
entidad numérica que representa, puede cambiar a lo largo de una sesión de
MATLAB o a lo largo de la ejecución de un programa. La forma más normal de
cambiar el valor de una variable es colocándola a la izquierda del operador de
asignación (=).
>> x = 12;>> y = -4:>> z = x*yz =
-48
Variables1. Uso del punto y coma (;)Se usa un punto y coma (;) al final de una instrucción para separar comandos ycuyos resultados no serán presentados en pantalla.
2. Uso de la coma (,)Sirve para la separación de comandos y elementos de un vector.
3. Comentario (%)El símbolo % se utiliza para introducir comentarios en el transcurso de laprogramación.
4. Puntos suspensivos (…)
Si hay demasiados números en una fila de una matriz para que quepan en unalínea, podemos continuar la instrucción en la siguiente línea, pero se requiere unacoma y tres puntos (puntos suspensivos) al final de la línea para indicar que la filadebe continuar.
1. Uso del punto y coma (;)Se usa un punto y coma (;) al final de una instrucción para separar comandos ycuyos resultados no serán presentados en pantalla.
2. Uso de la coma (,)Sirve para la separación de comandos y elementos de un vector.
3. Comentario (%)El símbolo % se utiliza para introducir comentarios en el transcurso de laprogramación.
4. Puntos suspensivos (…)
Si hay demasiados números en una fila de una matriz para que quepan en unalínea, podemos continuar la instrucción en la siguiente línea, pero se requiere unacoma y tres puntos (puntos suspensivos) al final de la línea para indicar que la filadebe continuar.
Ejemplo:
>> F= [1,52,64,197,42,-42,55,82,22,109];
>> F= [1, 52, 64, 197, 42, -42,…
55, 82, 22, 109];
Ejemplo:
>> F= [1,52,64,197,42,-42,55,82,22,109];
>> F= [1, 52, 64, 197, 42, -42,…
55, 82, 22, 109];
Como en casi todos los lenguajes de programación, en
MATLAB las matrices y vectores son variables que tienen
nombres. Se sugiere que se utilicen letras mayúsculas para
matrices y letras minúsculas para vectores y escalares.
Vectores y Matrices
Como en casi todos los lenguajes de programación, en
MATLAB las matrices y vectores son variables que tienen
nombres. Se sugiere que se utilicen letras mayúsculas para
matrices y letras minúsculas para vectores y escalares.
1.Escalar
Es un solo número que se puede representar por una variable>>a = 4; b = 1.25;
2. Vector fila o columna
Si los números están separados por blancos o comas, el resultado será unvector fila; mientras que si los números están separados por pulsaciones intro opor caracteres punto y coma (;), el resultado será un vector columna.
Vectores y Matrices
1.Escalar
Es un solo número que se puede representar por una variable>>a = 4; b = 1.25;
2. Vector fila o columna
Si los números están separados por blancos o comas, el resultado será unvector fila; mientras que si los números están separados por pulsaciones intro opor caracteres punto y coma (;), el resultado será un vector columna.
Existen varias formas de declarar un vector:
• En forma directa
Se forma declarando una variable cuyos equivalentes numéricos deben estar entre corchetes.
Vectores
>> A = [2,4,6] % vector filaA =
2 4 6>> A = [2 4 6]A =
2 4 6>> B=[10;12;14] % vector columnaB =
101214
>> B=[101214]B =
101214
>> A = [2,4,6] % vector filaA =
2 4 6>> A = [2 4 6]A =
2 4 6>> B=[10;12;14] % vector columnaB =
101214
>> B=[101214]B =
101214
>> A = [2,4,6] % vector filaA =
2 4 6>> A = [2 4 6]A =
2 4 6>> B=[10;12;14] % vector columnaB =
101214
>> B=[101214]B =
101214
>> A = [2,4,6] % vector filaA =
2 4 6>> A = [2 4 6]A =
2 4 6>> B=[10;12;14] % vector columnaB =
101214
>> B=[101214]B =
101214
>> C=2:2:20C =
2 4 6 8 10 12 14 16 18 20>> D=-2:0.25:2D =Columns 1 through 9
-2.0000 -1.7500 -1.5000 -1.2500 -1.0000 -0.7500 -0.5000 -0.25000Columns 10 through 17
0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.75002.0000
>> C=2:2:20C =
2 4 6 8 10 12 14 16 18 20>> D=-2:0.25:2D =Columns 1 through 9
-2.0000 -1.7500 -1.5000 -1.2500 -1.0000 -0.7500 -0.5000 -0.25000Columns 10 through 17
0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.75002.0000
•Con el operador (:)
Nomenclatura: B = NICIO:INTERVALO:FIN
Vectores
>> C=2:2:20C =
2 4 6 8 10 12 14 16 18 20>> D=-2:0.25:2D =Columns 1 through 9
-2.0000 -1.7500 -1.5000 -1.2500 -1.0000 -0.7500 -0.5000 -0.25000Columns 10 through 17
0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.75002.0000
>> C=2:2:20C =
2 4 6 8 10 12 14 16 18 20>> D=-2:0.25:2D =Columns 1 through 9
-2.0000 -1.7500 -1.5000 -1.2500 -1.0000 -0.7500 -0.5000 -0.25000Columns 10 through 17
0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.75002.0000
A = linspace (PRIMER_VALOR,ULTIMO_VALOR,NUMERO DE MUESTRAS)>> A=linspace (0,pi,12)A =Columns 1 through 8
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 1.9992Columns 9 through 122.2848 2.5704 2.8560 3.1416>> B=linspace(0,sin(pi/4),8)B =Columns 1 through 7
0 0.1010 0.2020 0.3030 0.4041 0.5051 0.6061Column 80.7071
A = linspace (PRIMER_VALOR,ULTIMO_VALOR,NUMERO DE MUESTRAS)>> A=linspace (0,pi,12)A =Columns 1 through 8
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 1.9992Columns 9 through 122.2848 2.5704 2.8560 3.1416>> B=linspace(0,sin(pi/4),8)B =Columns 1 through 7
0 0.1010 0.2020 0.3030 0.4041 0.5051 0.6061Column 80.7071
•Comando linspace
Genera un vector bajo la siguiente nomenclatura:
Vectores
A = linspace (PRIMER_VALOR,ULTIMO_VALOR,NUMERO DE MUESTRAS)>> A=linspace (0,pi,12)A =Columns 1 through 8
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 1.9992Columns 9 through 122.2848 2.5704 2.8560 3.1416>> B=linspace(0,sin(pi/4),8)B =Columns 1 through 7
0 0.1010 0.2020 0.3030 0.4041 0.5051 0.6061Column 80.7071
A = linspace (PRIMER_VALOR,ULTIMO_VALOR,NUMERO DE MUESTRAS)>> A=linspace (0,pi,12)A =Columns 1 through 8
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136 1.9992Columns 9 through 122.2848 2.5704 2.8560 3.1416>> B=linspace(0,sin(pi/4),8)B =Columns 1 through 7
0 0.1010 0.2020 0.3030 0.4041 0.5051 0.6061Column 80.7071
Matrices
Es un conjunto de números dispuestos en una retícula rectangular de filas
y columnas. Al igual que los vectores. MATLAB dispone de varias formas
de definir matrices. El introducirlas por teclado sólo es práctico en casos
de pequeño tamaño y cuando no hay que repetir esa operación muchas
veces. Las matrices toman tamaño al ser definidas y este tamaño puede
ser modificado por el usuario mediante adición y/o borrado de filas y
columnas. A continuación se muestra las diferentes formas de la creación
de una matriz.
Es un conjunto de números dispuestos en una retícula rectangular de filas
y columnas. Al igual que los vectores. MATLAB dispone de varias formas
de definir matrices. El introducirlas por teclado sólo es práctico en casos
de pequeño tamaño y cuando no hay que repetir esa operación muchas
veces. Las matrices toman tamaño al ser definidas y este tamaño puede
ser modificado por el usuario mediante adición y/o borrado de filas y
columnas. A continuación se muestra las diferentes formas de la creación
de una matriz.
Matrices
>> M=[2 4 6;8 10 12;14 16 18] %(;)indicael fin de la filaM =
2 4 68 10 1214 16 18
>> N=[15 17 19]N =
15 17 19>> P=[5 7 9]P =
5 7 9>> A=[2 4 6]A =
2 4 6>> B=[8 10 12]B =
8 10 12
>> M=[2 4 6;8 10 12;14 16 18] %(;)indicael fin de la filaM =
2 4 68 10 1214 16 18
>> N=[15 17 19]N =
15 17 19>> P=[5 7 9]P =
5 7 9>> A=[2 4 6]A =
2 4 6>> B=[8 10 12]B =
8 10 12
•Ingresando cada uno de los valores
>> M=[2 4 6;8 10 12;14 16 18] %(;)indicael fin de la filaM =
2 4 68 10 1214 16 18
>> N=[15 17 19]N =
15 17 19>> P=[5 7 9]P =
5 7 9>> A=[2 4 6]A =
2 4 6>> B=[8 10 12]B =
8 10 12
>> M=[2 4 6;8 10 12;14 16 18] %(;)indicael fin de la filaM =
2 4 68 10 1214 16 18
>> N=[15 17 19]N =
15 17 19>> P=[5 7 9]P =
5 7 9>> A=[2 4 6]A =
2 4 6>> B=[8 10 12]B =
8 10 12
>> M1=[N;A;B]M1 =
15 17 192 4 68 10 12
>> M2=[[P'],[A’],[B’]]M2 =
5 2 87 4 109 6 12
>> M1=[N;A;B]M1 =
15 17 192 4 68 10 12
>> M2=[[P'],[A’],[B’]]M2 =
5 2 87 4 109 6 12
•A partir de vectores
Matrices
>> M1=[N;A;B]M1 =
15 17 192 4 68 10 12
>> M2=[[P'],[A’],[B’]]M2 =
5 2 87 4 109 6 12
>> M1=[N;A;B]M1 =
15 17 192 4 68 10 12
>> M2=[[P'],[A’],[B’]]M2 =
5 2 87 4 109 6 12
NOTA: Un operador muy útil para manipular matrices es el operador de transponer.
La transpuesta de una matriz A se denota con A' y representa una nueva matriz en la que las filas de A se han
convertido en las columnas de A'.
Matrices especiales
Existen funciones especiales en MATLAB que nos permiten definir con
gran facilidad matrices de tipos particulares. Algunas de estas funciones son
las siguientes:
Matrices
Matrices especiales
Existen funciones especiales en MATLAB que nos permiten definir con
gran facilidad matrices de tipos particulares. Algunas de estas funciones son
las siguientes:
Comando Descripción
eye Matriz de identidad
eye(4) Forma la matriz unidad de tamaño (4x4)
zeros Matriz de ceros
zeros(3,5) Forma la matriz de ceros de tamaño (3x5)
ones Matriz de unos
ones(2,4) Forma la matriz de unos de tamaño (2x4)
Matrices
Matrices especiales
ones(2,4) Forma la matriz de unos de tamaño (2x4)
rand Matriz de números aleatorios
rand(3) Forma una matriz de números aleatorios entre 0 y 1, condistribución uniforme, de tamaño (3x3)
randn Matriz de números aleatorios (positivos y negativos)
randn(4) Forma una matriz de números aleatorios de tamaño (4x4),con distribución normal, de valor medio 0 y varianza 1.
magic(4) Crea una matriz (4x4) con los números 1,2,…,4*4, con lapropiedad de que todas las filas y columnas suman lo mismo.
diag Diagonal principal
triu Matriz triangular superior
tril Matriz triangular inferior
>> A=eye(3,4)A =
1 0 0 00 1 0 00 0 1 0
>> B=zeros(3)B =
0 0 00 0 00 0 0
>> C=ones(2,4)C =
1 1 1 11 1 1 1
>> D=rand(2,5)D =
0.9501 0.6068 0.8913 0.4565 0.82140.2311 0.4860 0.7621 0.0185 0.4447
>> A=eye(3,4)A =
1 0 0 00 1 0 00 0 1 0
>> B=zeros(3)B =
0 0 00 0 00 0 0
>> C=ones(2,4)C =
1 1 1 11 1 1 1
>> D=rand(2,5)D =
0.9501 0.6068 0.8913 0.4565 0.82140.2311 0.4860 0.7621 0.0185 0.4447
Matrices especialesEJEMPLO
>> A=eye(3,4)A =
1 0 0 00 1 0 00 0 1 0
>> B=zeros(3)B =
0 0 00 0 00 0 0
>> C=ones(2,4)C =
1 1 1 11 1 1 1
>> D=rand(2,5)D =
0.9501 0.6068 0.8913 0.4565 0.82140.2311 0.4860 0.7621 0.0185 0.4447
>> A=eye(3,4)A =
1 0 0 00 1 0 00 0 1 0
>> B=zeros(3)B =
0 0 00 0 00 0 0
>> C=ones(2,4)C =
1 1 1 11 1 1 1
>> D=rand(2,5)D =
0.9501 0.6068 0.8913 0.4565 0.82140.2311 0.4860 0.7621 0.0185 0.4447
>> E=magic(3)E =
8 1 63 5 74 9 2
>> F=randn(4)F =
-0.4326 -1.1465 0.3273 -0.5883-1.6656 1.1909 0.1746 2.18320.1253 1.1892 -0.1867 -0.13640.2877 -0.0376 0.7258 0.1139
>> G=diag(E)G =
852
>> H=triu(E)H =
8 1 60 5 70 0 2
>> I=tril(E)I =
8 0 03 5 04 9 2
>> E=magic(3)E =
8 1 63 5 74 9 2
>> F=randn(4)F =
-0.4326 -1.1465 0.3273 -0.5883-1.6656 1.1909 0.1746 2.18320.1253 1.1892 -0.1867 -0.13640.2877 -0.0376 0.7258 0.1139
>> G=diag(E)G =
852
>> H=triu(E)H =
8 1 60 5 70 0 2
>> I=tril(E)I =
8 0 03 5 04 9 2
Matrices especialesEJEMPLO
>> E=magic(3)E =
8 1 63 5 74 9 2
>> F=randn(4)F =
-0.4326 -1.1465 0.3273 -0.5883-1.6656 1.1909 0.1746 2.18320.1253 1.1892 -0.1867 -0.13640.2877 -0.0376 0.7258 0.1139
>> G=diag(E)G =
852
>> H=triu(E)H =
8 1 60 5 70 0 2
>> I=tril(E)I =
8 0 03 5 04 9 2
>> E=magic(3)E =
8 1 63 5 74 9 2
>> F=randn(4)F =
-0.4326 -1.1465 0.3273 -0.5883-1.6656 1.1909 0.1746 2.18320.1253 1.1892 -0.1867 -0.13640.2877 -0.0376 0.7258 0.1139
>> G=diag(E)G =
852
>> H=triu(E)H =
8 1 60 5 70 0 2
>> I=tril(E)I =
8 0 03 5 04 9 2
Acceso a los elementos de una matriz
Matlab utiliza los paréntesis para acceder a los elementos de una matriz. Los
subíndices empiezan en uno, por lo tanto el primer elemento es A(1,1).
Matrices
Acceso a los elementos de una matriz
Matlab utiliza los paréntesis para acceder a los elementos de una matriz. Los
subíndices empiezan en uno, por lo tanto el primer elemento es A(1,1).
Acceso a los elementos de una matrizEJEMPLO
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 0.21930.6686 -0.1567 1.4151 -0.9219
>> A(3,4)=12.8A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 0.21930.6686 -0.1567 1.4151 -0.9219
>> A(3,4)=12.8A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 0.21930.6686 -0.1567 1.4151 -0.9219
>> A(3,4)=12.8A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 0.21930.6686 -0.1567 1.4151 -0.9219
>> A(3,4)=12.8A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
Se pueden utilizar vectores para definir índices.
Acceso a los elementos de una matrizEJEMPLO
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 12.80000.6686 -0.1567 1.4151 -0.9219
>> A(2:3,1:3)=zeros (2,3); % o bien: A(2:3,1:4)=zeros 0;A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
>> A([2,3],[2,4])=ones (2,2); % o bien: A(2:3,2:4)=1;A =
0.8156 1.1908 -1.6041 -0.80510.0000 1.0000 0.0000 1.00000.0000 1.0000 0.0000 1.00000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 12.80000.6686 -0.1567 1.4151 -0.9219
>> A(2:3,1:3)=zeros (2,3); % o bien: A(2:3,1:4)=zeros 0;A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
>> A([2,3],[2,4])=ones (2,2); % o bien: A(2:3,2:4)=1;A =
0.8156 1.1908 -1.6041 -0.80510.0000 1.0000 0.0000 1.00000.0000 1.0000 0.0000 1.00000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 12.80000.6686 -0.1567 1.4151 -0.9219
>> A(2:3,1:3)=zeros (2,3); % o bien: A(2:3,1:4)=zeros 0;A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
>> A([2,3],[2,4])=ones (2,2); % o bien: A(2:3,2:4)=1;A =
0.8156 1.1908 -1.6041 -0.80510.0000 1.0000 0.0000 1.00000.0000 1.0000 0.0000 1.00000.6686 -0.1567 1.4151 -0.9219
A =0.8156 1.1908 -1.6041 -0.80510.7119 -1.2025 0.2573 0.52871.2902 -0.0198 -1.0565 12.80000.6686 -0.1567 1.4151 -0.9219
>> A(2:3,1:3)=zeros (2,3); % o bien: A(2:3,1:4)=zeros 0;A =
0.8156 1.1908 -1.6041 -0.80510.0000 0.0000 0.0000 0.52870.0000 0.0000 0.0000 12.80000.6686 -0.1567 1.4151 -0.9219
>> A([2,3],[2,4])=ones (2,2); % o bien: A(2:3,2:4)=1;A =
0.8156 1.1908 -1.6041 -0.80510.0000 1.0000 0.0000 1.00000.0000 1.0000 0.0000 1.00000.6686 -0.1567 1.4151 -0.9219
Operaciones con matrices
Operadores aritméticos
MATLAB puede operar con matrices por medio de operadores y por medio de funciones.
Los operadores matriciales básicos de MATLAB son los siguientes:
Operación SímboloAdición o suma +
Sustracción o resta –
Multiplicación *
Traspuesta '
Potenciación ^
División-izquierda \
División-derecha /
Producto elemento a elemento .*
División elemento a elemento ./ y .\
Elevar a una potencia elemento a elemento .^
Todos estos operadores son coherentes con las correspondientes
operaciones matriciales: no se puede por ejemplo sumar matrices que no
sean del mismo tamaño
>> E=magic(3)E =
8 1 63 5 74 9 2
>> E+Eans =
16 2 126 10 148 18 4
>> E-2ans =
6 -1 41 3 52 7 0
>> E'ans =
8 3 41 5 96 7 2
>> E=magic(3)E =
8 1 63 5 74 9 2
>> E+Eans =
16 2 126 10 148 18 4
>> E-2ans =
6 -1 41 3 52 7 0
>> E'ans =
8 3 41 5 96 7 2
Operadores aritméticos
>> E=magic(3)E =
8 1 63 5 74 9 2
>> E+Eans =
16 2 126 10 148 18 4
>> E-2ans =
6 -1 41 3 52 7 0
>> E'ans =
8 3 41 5 96 7 2
>> E=magic(3)E =
8 1 63 5 74 9 2
>> E+Eans =
16 2 126 10 148 18 4
>> E-2ans =
6 -1 41 3 52 7 0
>> E'ans =
8 3 41 5 96 7 2
>> E*Eans =
91 67 6767 91 6767 67 91
>> E^2ans =
91 67 6767 91 6767 67 91
>> E.*Eans =
64 1 369 25 4916 81 4
>> E.^2ans =
64 1 369 25 4916 81 4
>> E*Eans =
91 67 6767 91 6767 67 91
>> E^2ans =
91 67 6767 91 6767 67 91
>> E.*Eans =
64 1 369 25 4916 81 4
>> E.^2ans =
64 1 369 25 4916 81 4
Operadores aritméticos: EJEMPLO
>> E*Eans =
91 67 6767 91 6767 67 91
>> E^2ans =
91 67 6767 91 6767 67 91
>> E.*Eans =
64 1 369 25 4916 81 4
>> E.^2ans =
64 1 369 25 4916 81 4
>> E*Eans =
91 67 6767 91 6767 67 91
>> E^2ans =
91 67 6767 91 6767 67 91
>> E.*Eans =
64 1 369 25 4916 81 4
>> E.^2ans =
64 1 369 25 4916 81 4
>> E\Eans =
1 0 00 1 00 0 1
>> M=[2 3 7;1,2,4;-1 0 3]M =
2 3 71 2 4-1 0 3
>> E\Mans =
0.0861 0.1528 0.6444-0.2056 -0.1389 -0.02220.2528 0.3194 0.3111
>> E/Mans =
10.6000 -15.4000 -2.2000-0.6000 3.4000 -0.8000-7.0000 15.0000 -3.0000
>> E\Eans =
1 0 00 1 00 0 1
>> M=[2 3 7;1,2,4;-1 0 3]M =
2 3 71 2 4-1 0 3
>> E\Mans =
0.0861 0.1528 0.6444-0.2056 -0.1389 -0.02220.2528 0.3194 0.3111
>> E/Mans =
10.6000 -15.4000 -2.2000-0.6000 3.4000 -0.8000-7.0000 15.0000 -3.0000
Operadores aritméticos: EJEMPLO
>> E\Eans =
1 0 00 1 00 0 1
>> M=[2 3 7;1,2,4;-1 0 3]M =
2 3 71 2 4-1 0 3
>> E\Mans =
0.0861 0.1528 0.6444-0.2056 -0.1389 -0.02220.2528 0.3194 0.3111
>> E/Mans =
10.6000 -15.4000 -2.2000-0.6000 3.4000 -0.8000-7.0000 15.0000 -3.0000
>> E\Eans =
1 0 00 1 00 0 1
>> M=[2 3 7;1,2,4;-1 0 3]M =
2 3 71 2 4-1 0 3
>> E\Mans =
0.0861 0.1528 0.6444-0.2056 -0.1389 -0.02220.2528 0.3194 0.3111
>> E/Mans =
10.6000 -15.4000 -2.2000-0.6000 3.4000 -0.8000-7.0000 15.0000 -3.0000
MATLAB trabaja siempre en doble precisión, es decir guardando cada dato en 8
bytes, con unas 15 cifras decimales exactas; además puede trabajar con cadenas
de caracteres (strings) y, desde la versión 5.0, también con otros tipos de datos:
Matrices de más dos dimensiones, matrices dispersas, vectores y matrices de
celdas, estructuras y clases y objetos.
Tipos de datos
MATLAB trabaja siempre en doble precisión, es decir guardando cada dato en 8
bytes, con unas 15 cifras decimales exactas; además puede trabajar con cadenas
de caracteres (strings) y, desde la versión 5.0, también con otros tipos de datos:
Matrices de más dos dimensiones, matrices dispersas, vectores y matrices de
celdas, estructuras y clases y objetos.
Los elementos constitutivos de vectores y matrices son números reales
almacenados en 8 bytes (53 bits para la mantisa y 11 para el exponente de 2; entre
15 y 16 cifras decimales equivalentes). Es importante saber cómo trabaja MATLAB
con estos números y los casos especiales que presentan.
MATLAB mantiene una forma especial para los valores infinito (inf ó Inf) y Not a
Number (NaN).
Números reales de doble precisión
Los elementos constitutivos de vectores y matrices son números reales
almacenados en 8 bytes (53 bits para la mantisa y 11 para el exponente de 2; entre
15 y 16 cifras decimales equivalentes). Es importante saber cómo trabaja MATLAB
con estos números y los casos especiales que presentan.
MATLAB mantiene una forma especial para los valores infinito (inf ó Inf) y Not a
Number (NaN).
>> 2.0/0.0Warning: Divide by zeroans =
Inf>> 0/0Warning: Divide by zeroans =
NaN>> inf/infans =
NaN
>> 2.0/0.0Warning: Divide by zeroans =
Inf>> 0/0Warning: Divide by zeroans =
NaN>> inf/infans =
NaN
Números reales de doble precisión: EJEMPLO
>> 2.0/0.0Warning: Divide by zeroans =
Inf>> 0/0Warning: Divide by zeroans =
NaN>> inf/infans =
NaN
>> 2.0/0.0Warning: Divide by zeroans =
Inf>> 0/0Warning: Divide by zeroans =
NaN>> inf/infans =
NaN
Este tipo de respuesta, son enormemente importantes en MATLAB, pues permiten
controlar la fiabilidad de los resultados de los cálculos matriciales. Los NaN se
propagan al realizar con ellos cualquier operación aritmética, en el sentido de que,
por ejemplo, cualquier número sumado a un NaN da otro NaN. MATLAB tiene
esto en cuenta. Algo parecido sucede con los Inf.
Números reales de doble precisión: EJEMPLO
MATLAB dispone de tres funciones útiles relacionadas con las operaciones de
coma flotante. Estas funciones, que no tienen argumentos, son las siguientes:
eps Devuelve la diferencia entre 1.0 y el número de coma flotanteinmediatamente superior. Da una idea de la precisión o númerode cifras almacenadas. En un PC, eps vale 2.2204e-016
realmin Devuelve el número más pequeño con que se puede trabajar(2.2251e-308)
realmax Devuelve el número más grande con que se puede trabajar(1.7977e+308)
MATLAB permite crear variables enteras con 1, 2, 4 y 8 bytes (8, 16, 32 y
64 bits). A su vez, estas variables pueden tener signo o no tenerlo. Las
variables con signo representan números en intervalos "casi" simétricos
respecto al 0; las variables sin signo representan número no negativos,
desde el 0 al número máximo.
Otros tipos de datos, variables: Integer, Float, y Logical.
MATLAB permite crear variables enteras con 1, 2, 4 y 8 bytes (8, 16, 32 y
64 bits). A su vez, estas variables pueden tener signo o no tenerlo. Las
variables con signo representan números en intervalos "casi" simétricos
respecto al 0; las variables sin signo representan número no negativos,
desde el 0 al número máximo.
Los tipos de los enteros con signo son int8, int16, int32 e int64, y sin signo uint8,
uint16, uint32 y uint64. Para crear una variable entera de un tipo determinado se
pueden utilizar sentencias como las siguientes:
Otros tipos de datos, variables: Integer, Float, y Logical.
>>i=int32(100); % se crea un entero de 4 bytes con valor100
>>j=zeros(100); i=int32(j); % se crea un entero i a partirde j
>>i=zeros(1000,1000,'int32'); % se crea una matriz
1000x1000 de enteros
>>i=int32(100); % se crea un entero de 4 bytes con valor100
>>j=zeros(100); i=int32(j); % se crea un entero i a partirde j
>>i=zeros(1000,1000,'int32'); % se crea una matriz
1000x1000 de enteros
Las funciones intmin('int64') e intmax('int64') permiten por ejemplo saber el valor del
entero más pequeño y más grande (en valor algebraico) que puede formarse con
variables enteras de 64 bits:
Otros tipos de datos, variables: Integer, Float, y Logical.
Las funciones intmin('int64') e intmax('int64') permiten por ejemplo saber el valor del
entero más pequeño y más grande (en valor algebraico) que puede formarse con
variables enteras de 64 bits:
>> disp([intmin('int64'), intmax('int64')])
-9223372036854775808 9223372036854775807
>> disp([intmin('int64'), intmax('int64')])
-9223372036854775808 9223372036854775807
Otros tipos de datos, variables: Integer, Float, y Logical.
La función isinteger(i) devuelve 1 si la variable i es entera y 0 en otro caso. La
función class(i) devuelve el tipo de variable que es i (int8, int16, ...), mientras que
la función isa(i, 'int16') permite saber exactamente si la variable i corresponde a
un entero de 16 bits.
MATLAB dispone de dos tipos de variables reales o float: single y double, que
ocupan respectivamente 4 y 8 bytes. Por defecto se utilizan doubles. Las
funciones single(x) y double(y) permiten realizar conversiones entre ambos tipos
de variables.
La función isinteger(i) devuelve 1 si la variable i es entera y 0 en otro caso. La
función class(i) devuelve el tipo de variable que es i (int8, int16, ...), mientras que
la función isa(i, 'int16') permite saber exactamente si la variable i corresponde a
un entero de 16 bits.
MATLAB dispone de dos tipos de variables reales o float: single y double, que
ocupan respectivamente 4 y 8 bytes. Por defecto se utilizan doubles. Las
funciones single(x) y double(y) permiten realizar conversiones entre ambos tipos
de variables.
Las funciones realmin y realmax permiten saber los números double más pequeño y más
grande (en valor absoluto) que admite el computador. Para los correspondientes números
de simple precisión habría que utilizar realmin('single') y realmax('single'). La función
isfloat(x) permite saber si x es una variable real, de simple o doble precisión. Para saber
exactamente de qué tipo de variable se trata se pueden utilizar las funciones isa(x, 'single')
ó isa(x, 'double'). Obsérvese el ejemplo siguiente, en el que se ve cómo con variables
single se reduce el tiempo de CPU y la memoria:
Otros tipos de datos, variables: Integer, Float, y Logical.
Las funciones realmin y realmax permiten saber los números double más pequeño y más
grande (en valor absoluto) que admite el computador. Para los correspondientes números
de simple precisión habría que utilizar realmin('single') y realmax('single'). La función
isfloat(x) permite saber si x es una variable real, de simple o doble precisión. Para saber
exactamente de qué tipo de variable se trata se pueden utilizar las funciones isa(x, 'single')
ó isa(x, 'double'). Obsérvese el ejemplo siguiente, en el que se ve cómo con variables
single se reduce el tiempo de CPU y la memoria:
>> n=1000; AA=rand(n); A=single(AA);
>> tic, Bs=inv(A); toc
Elapsed time is 1.985000 seconds.
>> tic, Bd=inv(AA); toc
Elapsed time is 4.296000 seconds.
>> n=1000; AA=rand(n); A=single(AA);
>> tic, Bs=inv(A); toc
Elapsed time is 1.985000 seconds.
>> tic, Bd=inv(AA); toc
Elapsed time is 4.296000 seconds.
NOTA: inv(A) significa inversa de la matriz A.
Quizás las variables más interesantes aparte de las variables por defecto, las
double sean las variables logical, que sólo pueden tomar los valores true (1) y
false (0). Las variables lógicas surgen como resultado de los operadores
relacionales (==, <, <=, >, >=, ~=) y de muchas funciones lógicas como any y all que
se aplican a vectores y matrices.
La función logical(A) produce una variable lógica, con el mismo número de
elementos que A, con valores 1 ó 0 según el correspondiente elementos de A sea
distinto de cero o igual a cero.
Otros tipos de datos, variables: Integer, Float, y Logical.
Quizás las variables más interesantes aparte de las variables por defecto, las
double sean las variables logical, que sólo pueden tomar los valores true (1) y
false (0). Las variables lógicas surgen como resultado de los operadores
relacionales (==, <, <=, >, >=, ~=) y de muchas funciones lógicas como any y all que
se aplican a vectores y matrices.
La función logical(A) produce una variable lógica, con el mismo número de
elementos que A, con valores 1 ó 0 según el correspondiente elementos de A sea
distinto de cero o igual a cero.
Otros tipos de datos, variables: Integer, Float, y Logical.
Una de las aplicaciones más importantes de las variables lógicas es para separar o extraer
los elementos de una matriz o vector que cumplen cierta condición, y operar luego
selectivamente sobre dichos elementos. Obsérvese, el siguiente ejemplo:
>> A=magic(4)A =16 2 3 135 11 10 89 7 6 124 14 15 1>> j=A>10j =1 0 0 10 1 0 00 0 0 10 1 1 0>> isa(j,'logical')ans =1>> A(j)=-10A =-10 2 3 -105 -10 10 89 7 6 -104 -10 -10 1
>> A=magic(4)A =16 2 3 135 11 10 89 7 6 124 14 15 1>> j=A>10j =1 0 0 10 1 0 00 0 0 10 1 1 0>> isa(j,'logical')ans =1>> A(j)=-10A =-10 2 3 -105 -10 10 89 7 6 -104 -10 -10 1
>> A=magic(4)A =16 2 3 135 11 10 89 7 6 124 14 15 1>> j=A>10j =1 0 0 10 1 0 00 0 0 10 1 1 0>> isa(j,'logical')ans =1>> A(j)=-10A =-10 2 3 -105 -10 10 89 7 6 -104 -10 -10 1
>> A=magic(4)A =16 2 3 135 11 10 89 7 6 124 14 15 1>> j=A>10j =1 0 0 10 1 0 00 0 0 10 1 1 0>> isa(j,'logical')ans =1>> A(j)=-10A =-10 2 3 -105 -10 10 89 7 6 -104 -10 -10 1
En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos, con
parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos.
Para ver como se representan por defecto los números complejos, ejecútense los siguientes
comandos:
Números Complejos: Función Complex
En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos, con
parte real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos.
Para ver como se representan por defecto los números complejos, ejecútense los siguientes
comandos:
>> a=sqrt(-4)a =0 + 2.0000i>> 3 + 4jans =3.0000 + 4.0000i
>> a=sqrt(-4)a =0 + 2.0000i>> 3 + 4jans =3.0000 + 4.0000i
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i y la j para representar el número
imaginario unidad (en la salida, sin embargo, puede verse que siempre aparece la i). Si la i o la j no están
definidas como variables, puede intercalarse el signo (*). Esto no es posible en el caso de que sí estén definidas,
porque entonces se utiliza el valor de la variable. En general, cuando se está trabajando con números complejos,
conviene no utilizar la i como variable ordinaria, pues puede dar lugar a errores y confusiones. Por ejemplo,
obsérvense los siguientes resultados:
Números Complejos: Función Complex
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i y la j para representar el número
imaginario unidad (en la salida, sin embargo, puede verse que siempre aparece la i). Si la i o la j no están
definidas como variables, puede intercalarse el signo (*). Esto no es posible en el caso de que sí estén definidas,
porque entonces se utiliza el valor de la variable. En general, cuando se está trabajando con números complejos,
conviene no utilizar la i como variable ordinaria, pues puede dar lugar a errores y confusiones. Por ejemplo,
obsérvense los siguientes resultados:
i =>> i=2
2>> 2+3ians =2.0000 + 3.0000i>> 2+3*ians =8>> 2+3*jans =2.0000 + 3.0000i
i =>> i=2
2>> 2+3ians =2.0000 + 3.0000i>> 2+3*ians =8>> 2+3*jans =2.0000 + 3.0000i
Cuando i y j son variables utilizadas para otras finalidades,
como unidad imaginaria puede utilizarse también la función
sqrt(-1), o una variable a la que se haya asignado el resultado
de esta función.
La asignación de valores complejos a vectores y matrices desde teclado puede
hacerse de las dos formas, que se muestran en el ejemplo siguiente (conviene
hacer antes clear i, para que i no esté definida como variable; este comando se
estudiará más adelante):
>> A = [1+2i 2+3i; -1+i 2-3i]A =
1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesarioA =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1+2i 2+3i; -1+i 2-3i]A =
1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesarioA =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
Números Complejos: Función Complex
>> A = [1+2i 2+3i; -1+i 2-3i]A =
1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesarioA =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1+2i 2+3i; -1+i 2-3i]A =
1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesarioA =
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
Puede verse que es posible definir las partes reales e imaginarias por separado. En este
caso sí es necesario utilizar el operador (*), según se muestra en el ejemplo anterior.
MATLAB dispone asimismo de la función complex, que crea un número complejo
a partir de dos argumentos que representan la parte real e imaginaria, como en el
ejemplo siguiente:
>> complex(1,2)
ans =
1.0000 + 2.0000i
>> complex(1,2)
ans =
1.0000 + 2.0000i
Números Complejos: Función Complex
>> complex(1,2)
ans =
1.0000 + 2.0000i
>> complex(1,2)
ans =
1.0000 + 2.0000i
Es importante advertir que el operador de matriz traspuesta ('), aplicado a matrices
complejas, produce la matriz conjugada y traspuesta. Existe una función que
permite hallar la matriz conjugada (conj( )) y el operador punto y apóstrofo (.') que
calcula simplemente la matriz traspuesta.
Strings
Representa una cadena de caracteres o un arreglo de números especiales con sus
respectivos equivalentes en ASCII.
CONSTRUCCIÓN
Se crea una variable tipo string con la ayuda de los apostrofes ‘ …abc..’.
Representa una cadena de caracteres o un arreglo de números especiales con sus
respectivos equivalentes en ASCII.
CONSTRUCCIÓN
Se crea una variable tipo string con la ayuda de los apostrofes ‘ …abc..’.
>> t = 'Hola UTPL't =
Hola UTPL
>> t = 'Hola UTPL't =
Hola UTPL
double: Para convertir una variable string a número se usa el comando double.
CONVERSIÓN DE NÚMERO A STRING Y VICEVERSA
>> a = double(t)a =72 111 108 97 32 85 84 80 76
>> b = double('@')b =64
>> a = double(t)a =72 111 108 97 32 85 84 80 76
>> b = double('@')b =64
>> a = double(t)a =72 111 108 97 32 85 84 80 76
>> b = double('@')b =64
>> a = double(t)a =72 111 108 97 32 85 84 80 76
>> b = double('@')b =64
char: De la misma forma para cambiar una variable numérica a una variable string se
realiza con el comando char.
>> c = char(t)c =Hola UTPL
>> d = char(b)d =@
>> c = char(t)c =Hola UTPL
>> d = char(b)d =@
CONVERSIÓN DE NÚMERO A STRING Y VICEVERSA
>> c = char(t)c =Hola UTPL
>> d = char(b)d =@
>> c = char(t)c =Hola UTPL
>> d = char(b)d =@
Además el comando char nos permite crear una variable string a partir de
varios string.
>> legends = char('lunes','martes','miercoles')
legends =lunesmartesmiércoles
>> legends = char('lunes','martes','miercoles')
legends =lunesmartesmiércoles
Cargar, almacenar, leer, imprimir y abrir datos del Workspace.
La función input permite imprimir un mensaje en la línea de comandos de MATLAB y
recuperar como valor de retorno un valor numérico o el resultado de una expresión
tecleada por el usuario. Cualquier expresión válida de MATLAB es aceptada por este
comando. En cualquier caso, la expresión introducida es evaluada con los valores actuales
de las variables de MATLAB y el resultado se devuelve como valor de retorno. Véase un
ejemplo de uso de esta función:
Entradas del usuario
La función input permite imprimir un mensaje en la línea de comandos de MATLAB y
recuperar como valor de retorno un valor numérico o el resultado de una expresión
tecleada por el usuario. Cualquier expresión válida de MATLAB es aceptada por este
comando. En cualquier caso, la expresión introducida es evaluada con los valores actuales
de las variables de MATLAB y el resultado se devuelve como valor de retorno. Véase un
ejemplo de uso de esta función:
>> n = input('Teclee el número de ecuaciones')
Otra posible forma de esta función es la siguiente (obsérvese el parámetro 's'):
>> nombre = input('¿Cómo te llamas?','s')
>> n = input('Teclee el número de ecuaciones')
Otra posible forma de esta función es la siguiente (obsérvese el parámetro 's'):
>> nombre = input('¿Cómo te llamas?','s')
En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se
almacena en la cadena nombre.
La función disp permite imprimir en pantalla un mensaje de texto o el valor de una
matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o
matrices: las cadenas de caracteres son un caso particular de vectores. Considérense
los siguientes ejemplos de cómo se utiliza:
FUNCIÓN DISP
Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos
formas de imprimir la matriz A.
>> disp('El programa ha terminado')
>> A=rand(4,4)>> disp(A)
>> disp('El programa ha terminado')
>> A=rand(4,4)>> disp(A)