Arreglos En Matlab: Arreglos M Atl Ab

AS egu r rrida e gd en l oI nstern et M a tL a b Oriol Roca ARREGLOS EN MATLAB www.upibi.net AS egu r rrida e gd e

Views 54 Downloads 0 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

ARREGLOS EN MATLAB

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Arreglos Estructura de datos que permite almacenar varios datos bajo el mismo nombre. VECTORES: son unidimensionales

0

2

4

6

8

www.upibi.net

VS egu e crida t od en r eI nstern et Oriol Roca

M a tL a b

Vectores Para crear y almacenar en memoria un vector v que tenga como componentes v1 = 0, v2 = 2, v3 = 4, v4 = 6 y v5 = 8 podemos hacerlo componente a componente:

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Arreglos Estructura de datos que permite almacenar varios datos bajo el mismo nombre. VECTORES: Para acceder a los elementos de un vector

0 1

2

4 2

v(1)=0

6 3

8 4

5

v(2)=2

www.upibi.net

VS egu e crida t od en r eI nstern et

M a tL a b

Oriol Roca

Vectores de fila y de columna -La diferencia entre un vector fila y un vector columna es fundamental. -Para introducir un vector fila en MATLAB basta con escribir las componentes del vector dentro de corchetes y separadas por espacios en blanco:

v=[0 2 4 6 8]

-Para introducir un vector columna se escriben las componentes dentro de corchetes y separadas por el carácter punto y coma:

v=[0, 2, 4, 6, 8]

- En MATLAB es posible transformar un vector fila en un vector columna y viceversa (hallar su traspuesta) empleando una comilla simple:

vt=v’ www.upibi.net

VS egu e crida t od en r eI nstern et

M a tL a b

Oriol Roca

linspace(0,8,5) Valor inicial

Valor final

Número de elementos

O, para simplificar la creación de vectores, se puede definir un vector especificando su primer elemento, un incremento, y el último elemento. Así podemos definir igualmente el vector v como una secuencia que empieza en 0, avanza de 2 en 2 y que termina en el 8:

www.upibi.net

VS egu e crida t od en r eI nstern et Oriol Roca

M a tL a b

Vectores Puedes acceder fácilmente al contenido de una posición del vector, por ejemplo la primera. O modificarla:

www.upibi.net

VS egu e crida t od en r eI nstern et

M a tL a b

Oriol Roca

Vectores

Podemos obtener un elemento del vector llamándolo

>> v(3) = 4 Obtener porciones del vector es tan fácil como obtener elementos. Basta con separar el primer ínidice del último con dos puntos

>> v(2:4) =246 www.upibi.net

VS egu e crida t od en r eI nstern et

M a tL a b

Oriol Roca

Vectores Una técnica importante en Matlab es la concatenación de dos vectores, que puede hacerse simplemente pegándolos

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

www.upibi.net

VS egu e crida t od en r eI nstern et Oriol Roca

M a tL a b

Vectores Algunas veces es necesario introducir un vector con componentes a intervalos regulares. Esto se realiza fácilmente con MATLAB con la estructura inicio:incremento:fin. Si no se proporciona un incremento, MATLAB asume que es 1. >> x1=0:10 Se puede seleccionar el propio incremento. >> x2=0:2:10 Se puede ir incluso hacia atrás. >> x3=10:-2:1 O se le puede echar imaginación. >> x4=0:pi/2:2*pi

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Leer Vector

n=input(‘¿Cuántos elementos deseas? '); for i=1:n fprintf('introduce el %g elemento del vector ',i); vec(i)=input(' '); end disp(vec)

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Buscar posición de un elemento de un vector

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Buscar posición de un elemento de un vector

n=input('¿Cuántos elementos deseas? '); for i=1:n fprintf('introduce el %g elemento del vector ',i); vec(i)=input(' '); end x=input('¿Qué elemento quieres buscar? ') for i=1:n if v(i)==x fprintf(' El dato %g está en la posición %g\n ',x,i); end end www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Buscar elemento dada su posición

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Eliminar Vector Define un vector kt de 10 elementos

>>kt=[2 8 40 63 3 55 23 15 75 80] kt = 2

8

40

>>kt(6)=[ ] kt =

63

3

55

23

15

75

80

%elimina el sexto elemento %el vector ahora tiene 9 elementos

2

8

40

63

3

23

15

75

80

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Eliminar Vector Define un vector kt de 10 elementos

>>kt(3:6)=[ ]

%Elimina elementos de las posiciones 3 a la 6

kt = %el vector ahora tiene 5 elementos 2

8

15

75

80

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Suma de Elementos (Vector) A=[6 9 7 3 12 6 8] A=

6 1

9 2

7

3 3

12 6 4

5

6

8 7

Para esto debemos usar un acumulador (acu)

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Suma de Elementos (Vector) A=[6 9 7 3 12 6 8] A=

6 1

9 2

7

3 3

12 6 4

5

6

8 7

acu=0; vf=input('Cuantos elementos deseas? '); for i=1:vf fprintf('introduce el %g elemento del vector ',i); vec(i)=input(' '); acu= acu + vec(i); end disp(acu)

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Suma de Elementos (Vector) Otra manera más sencilla de sumar los elementos de un vector es utilizar el comando:

sum( ) sum(A) ans = 51

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Vector fila A=[1 2 3 4 5 6]

A= 1

2

3

Vector columna B=[1; 2; 3; 4; 5; 6]

4

5

6

B= 1 2 3 4 5 6 www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Tamaño de un Vector size(A) devuelve el número de filas y de columnas de la matriz A.

size(A) ans = 1 6 length(A)

1

2

3

4

5

6

calcula el número de elementos de un vector A

ans = 6

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicio Obtener la suma de los pares e impares el usuario

de un vector dado por

Debemos emplear 2 acumuladores: (pares e impares) que nos permitan sumar los elementos correspondientes, además de la condición IF

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicio Obtener la suma de los pares e impares pares=0; impares=0; x=input('ingrese el tamaño del vector '); for i=1:x fprintf('ingrese el dato para la posicion %g',i) vec(i)=input(' '); if mod(vec(i),2)==0 pares=pares+vec(i); else impares=impares+vec(i); end end fprintf('\n la suma de números pares es: %g', pares) fprintf(' \n la suma de números impares es: %g', impares) www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos Función length(A)

size(A)

Descripción

Ejemplo

Devuelve el número de elementos de >>A=[5 9 2 4]; A >>length(A) ans= 4 Devuelve el vector fila [m,n], donde m y n representan el tamaño m x n de arreglo A

>>A=[6 1 4 0 12;5 19 6 8 2] A= 6 5

1 19

4 6

0 12 8 2

>>size(A) ans= 2 5 www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos Función

Descripción

Ejemplo

reshape(A,m,n) Reordena una matriz A, que tiene r >>A=[5 1 6;8 0 2] filas y s columnas, a una matriz de m A = filas y n columnas. El valor de r por s debe ser igual al de m por n 5 1 6 8 0 2 B=reshape(A,3,2) B= 5 0 8 6 1 2

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos Función diag(v)

Descripción Cuando v es un vector, este comando crea una matriz cuadrada con los elementos de v en diagonal

Ejemplo >>v=[7 4 2]; >>A=diag(v) A= 7 0 0

0 4 0

0 0 2

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos Función diag(v)

Descripción Cuando A es una matriz, este comando crea un vector a partir de los elementos la de A diagonal

Ejemplo >>A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 68 9 7>>vec=diag(A) vec = 1 5 9

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Funciones para la manipulación de Arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicios Dado un vector, elemento a elemento, determina cuál elemento es el mayor. Ejemplo: V= 2 9 -3 8 Em= 9

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicios Dado un vector, elemento a elemento, determina cuál elemento es el mayor. %Determina el elemento mayor de un vector clc clear em=0; %elemento mayor n=input('Dame el tamaño del vector= '); %Elementos de un vector for k=1:n fprintf('introduce el %g elemento del vector ',k) v(k)=input(''); if v(k)>em; %em compara cada uno de los elementos del vector em=v(k); end end disp(v) fprintf('El elemento mayor es %g \n',em) www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicios

n=5 vector= 1 0 1 0 1 -------n=5 vector= 2 0 4 0 6 -------n=4 vector= 1 4 9 16 www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicios

Ordenamiento de un vector por método de la BURBUJA El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posición.

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Ejercicios

Ordenamiento de un vector por método de la BURBUJA Por ejemplo, imaginemos que tenemos los siguientes valores:

5 6 1 0 3 Lo que haría una burbuja simple, seria comenzar recorriendo los valores de izquierda a derecha, comenzando por el 5. Lo compara con el 6, con el 1, con el 0 y con el 3, si es mayor o menor (dependiendo si el orden es ascendiente o descendiente) se intercambian de posición. Luego continua con el siguiente, con el 6, y lo compara con todos los elementos de la lista, esperando ver si se cumple o no la misma condición que con el primer elemento. Así, sucesivamente, hasta el ultimo elemento de la lista.

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

MATRICES Una matriz es, como el vector, una colección de elementos del mismo tipo. Sin embargo, mientras el vector es unidimensional —una sola fila o columna — en la matriz los datos se organizan en dos o más dimensiones.

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES Las matrices se escriben como los vectores, pero separando las filas mediante un punto y coma; así una matriz 3x3:

>>M=[1 2 3;4 5 6;7 8 9] M= 123 456 789 >>M' % Su transpuesta ans = 147 258 369 www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES

Son bidimensionales

1 4 7

1,1 2,1 3,1

2 5 8

1,2 2,2 3,2

3 6 9

1,3 2,3 3,3

X(1,1)= 1 X(1,2)=2 X(2,1)=4 www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES Existen comandos que permiten crear de forma sencilla matrices. Por ejemplo: La matriz identidad

>>eye(5) ans = 10000 01000 00100 00010 00001 www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES Existen comandos que permiten crear de forma sencilla matrices. Por ejemplo: la matriz nula

>>zeros(3) ans = 000 000 000

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

MATRICES Existen comandos que permiten crear de forma sencilla matrices. Por ejemplo: o la matriz cuyos elementos valen todos 1:

>>ones(4) ans = 1111 1111 1111 1111

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

MATRICES Recorrido de un matriz Para recorrer una matriz necesitamos dos bucles anidados. Por ejemplo, si se desea recorrer todos los elementos de la matriz A por filas, se escribirán dos sentencias for anidadas:

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

MATRICES Ejemplo

n=input(‘¿Cuántos elementos deseas? '); for i=1:n for j=1:n fprintf(‘Ingrese el dato para la posicion %g, %g’,i,j) vec(i,j)=input(‘ ‘); end end disp(vec)

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

MATRICES Construcción de matrices con vectores Creamos tres vectores fila con los comandos

>> v1=1:3 >> v2=4:6 >> v3=7:9 Y creamos una matriz con los vectores anteriores

M=[v1;v2;v3]

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

MATRICES Construcción de matrices con vectores Cámbiense los vectores v1,v2,v3 en vectores columna con el operador de trasposición. >> v1=v1’ >> v2=v2’ >> v3=v3’ El comando >> P=[v1,v2,v3]

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

Buscar elemento

M a tL a b

Matrices

n=input(‘¿Cuántos elementos deseas? '); for i=1:n for j=1:n fprintf(‘Ingrese el dato para la posicion %g, %g’,i,j) vec(i,j)=input(‘ ‘); end end disp(vec) x=input(‘Ingrese el valor que quiere buscar’); for i=1:n for j=1:n if vec(i,j)==x fprintf(‘El dato %g esta en %g, %g\n’,x,i,j) end end end www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Suma y resta de arreglos Las operaciones de suma y resta se pueden utilizar con arreglos de tamaños idénticos, es decir, aquellos que tienen el mismo número de filas y columnas. La suma, así como la resta, de dos arreglos se lleva al cabo sumando o restando sus elementos. Cuando a un arreglo se le suma o resta un escalar (un número), éste se añade o se sustrae de todos los elementos del arreglo

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Suma y resta de arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Suma y resta de arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Multiplicación de arreglos La multiplicación de matrices se ejecuta solamente si el número de columnas de la matriz A es igual al número de filas de la matriz B. El resultado es una matriz que tiene el mismo número de filas que A y el mismo número de columnas que B. Por ejemplo, si A es una matriz de 3 x 3 y B es una matriz de 3 x 2. El resultado será de dimensión 3 x 2

Dos vectores se pueden multiplicar sólo si ambos tienen el mismo número de elementos. Es necesario además que uno sea vector fila y el otro vector columna www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Multiplicación de arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et Oriol Roca

M a tL a b

Multiplicación de arreglos

www.upibi.net

AS egu r rrida e gd en l oI nstern et

M a tL a b

Oriol Roca

Ejercicios Un programa que pida al usuario el tamaño de las filas y las columnas. Y valide que estas sean iguales para que la matriz sea cuadrada. Además deberá leer los datos de la matriz cuadrada y determinando la suma de los números pares e impares contenidos en la matriz.

www.upibi.net