Matlab 2 Capitulo 3

44
UNIVERSIDAD TノCNICA PARTICULAR DE LOJA La Universidad Católica de Loja ESCUELA DE INGENIERヘA CIVIL チREA DE FヘSICA Y MATEMチTICAS 2009

Transcript of Matlab 2 Capitulo 3

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)