arreglos ok

55
Seguridad en Internet Oriol Roca A r r e g l o s ARREGLOS EN MATLAB M a t L a b www.upibi.net

Upload: daniel-ainerubig

Post on 19-Jan-2016

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arreglos Ok

S egu rida d en I n tern etOriol Roca

A r r e g l o s

ARREGLOS EN MATLAB

M a t L a b

www.upibi.net

Page 2: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Arreglos

Estructura de datos que permite almacenar varios datos bajo el mismo Estructura de datos que permite almacenar varios datos bajo el mismo nombre.nombre.

A r r e g l o s

VECTORESVECTORES: son unidimensionales: son unidimensionales

0 2 4 6 8

Page 3: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

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:

V e c t o r e s

Page 4: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Arreglos

Estructura de datos que permite almacenar varios datos bajo el mismo Estructura de datos que permite almacenar varios datos bajo el mismo nombre.nombre.

A r r e g l o s

VECTORESVECTORES: Para acceder a los elementos de un vector: Para acceder a los elementos de un vector

v(1)=0v(1)=0 v(2)=2v(2)=2

0 2 4 6 81 2 3 4 5

Page 5: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

V e c t o r e s

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:

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

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

vt=v’

v=[0 2 4 6 8]

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

Page 6: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

V e c t o r e s

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:

linspace(0,8,5)Valor inicial Valor final Número de elementos

Page 7: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Vectores

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

V e c t o r e s

Page 8: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Vectores

V e c t o r e s

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) = 2 4 6

Page 9: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Vectores

V e c t o r e s

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] = 1 2 3 4 5 6

Page 10: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Vectores

V e c t o r e s

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

Page 11: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Leer Vector

A r r e g l o s

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

Page 12: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Buscar posición de un elemento de un vector

A r r e g l o s

Page 13: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Buscar posición de un elemento de un vector

A r r e g l o s

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

Page 14: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Buscar elemento dada su posición

A r r e g l o s

Page 15: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Eliminar Vector

Define un vector kt de 10 elementos

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

kt =

2 8 40 63 3 55 23 15 75 80

>>kt(6)=[ ] %elimina el sexto elementokt =

%el vector ahora tiene 9 elementos 2 8 40 63 3 23 15 75 80

A r r e g l o s

Page 16: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

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

A r r e g l o s

Page 17: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma de Elementos (Vector)

A r r e g l o s

A=[6 9 7 3 12 6 8]A=[6 9 7 3 12 6 8]

Para esto debemos usar un acumulador (acu)Para esto debemos usar un acumulador (acu)

6 9 7 3 12 6 8A=

1 2 3 4 5 6 7

Page 18: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma de Elementos (Vector)

A r r e g l o s

A=[6 9 7 3 12 6 8]A=[6 9 7 3 12 6 8]

acu=0;acu=0;vf=input('Cuantos elementos deseas? ');vf=input('Cuantos elementos deseas? ');for i=1:vffor i=1:vf

fprintf('introduce el %g elemento del vector ',i); fprintf('introduce el %g elemento del vector ',i); vec(i)=input(' ');vec(i)=input(' ');acu= acu + vec(i);acu= acu + vec(i);

endenddisp(acu)disp(acu)

6 9 7 3 12 6 8A=

1 2 3 4 5 6 7

Page 19: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma de Elementos (Vector)

A r r e g l o s

Otra manera más sencilla de sumar los elementos de un vector es Otra manera más sencilla de sumar los elementos de un vector es

utilizar el comando: utilizar el comando: sum( )sum( )sum(A)sum(A)

ans =ans =

5151

Page 20: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Vector fila

A r r e g l o s

A=[1 2 3 4 5 6]A=[1 2 3 4 5 6]A =A = 1 2 3 4 5 61 2 3 4 5 6

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

B = 1 2 3 4 5 6

Page 21: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Tamaño de un Vector

A r r e g l o s

size(A) devuelve el número de filas y de columnas de la matriz A.

size(A)ans = 1 6

1 2 3 4 5 61 2 3 4 5 6

length(A) calcula el número de elementos de un vector A

ans =

6

Page 22: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicio

A r r e g l o s

Obtener la suma de los pares e imparesObtener la suma de los pares e impares de un vector dado por de un vector dado por el usuarioel usuario

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

Page 23: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicio

A r r e g l o s

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

Page 24: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Función Descripción Ejemplo

length(A) Devuelve el número de elementos de A

>>A=[5 9 2 4];>>length(A)ans= 4

size(A) 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 1 4 0 125 19 6 8 2

>>size(A)ans= 2 5

Page 25: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Función Descripción Ejemplo

reshape(A,m,n) Reordena una matriz A, que tiene r filas y s columnas, a una matriz de m filas y n columnas. El valor de r por s debe ser igual al de m por n

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

5 1 68 0 2

B=reshape(A,3,2)

B =5 08 61 2

Page 26: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Función Descripción Ejemplo

diag(v) Cuando v es un vector, este comando crea una matriz cuadrada con los elementos de v en diagonal

>>v=[7 4 2];

>>A=diag(v)

A =

7 0 00 4 00 0 2

Page 27: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Función Descripción Ejemplo

diag(v) Cuando A es una matriz, este comando crea un vector a partir de los elementos la de A diagonal

>>A=[1 2 3;4 5 6;7 8 9]

A =1 2 34 5 668 97>>vec=diag(A)

vec =159

Page 28: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Page 29: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Page 30: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Page 31: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Funciones para la manipulación de Arreglos

A r r e g l o s

Page 32: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicios

A r r e g l o s

Dado un vector, elemento a elemento, determina cuál elemento es el mayor.

Ejemplo:Ejemplo:

V= 2 9 -3 8V= 2 9 -3 8

Em= 9Em= 9

Page 33: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicios

A r r e g l o s

Dado un vector, elemento a elemento, determina cuál elemento es el mayor.

%Determina el elemento mayor de un vectorclcclearem=0; %elemento mayorn=input('Dame el tamaño del vector= '); %Elementos de un vectorfor 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

enddisp(v)fprintf('El elemento mayor es %g \n',em)

Page 34: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicios

A r r e g l o s

n=5n=5

vector= 1 0 1 0 1vector= 1 0 1 0 1----------------n=5n=5

vector= 2 0 4 0 6vector= 2 0 4 0 6----------------n=4n=4

vector= 1 4 9 16vector= 1 4 9 16

Page 35: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicios

A r r e g l o s

Ordenamiento de un vector por método de la BURBUJAOrdenamiento de un vector por método de la BURBUJAEl 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.

Page 36: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Ejercicios

A r r e g l o s

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

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.

5 6 1 0 3

Page 37: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Page 38: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

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.

Page 39: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

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 =1 2 34 5 67 8 9>>M' % Su transpuestaans =1 4 72 5 83 6 9

Page 40: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Son bidimensionalesSon bidimensionales

X(1,1)= 1X(1,1)= 1X(1,2)=2X(1,2)=2X(2,1)=4X(2,1)=4

1 2 34 5 67 8 9

1,1 1,2 1,3

2,1

3,1 3,2 3,3

2,2 2,3

Page 41: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Existen comandos que permiten crear de forma sencilla matrices.Por ejemplo:

>>eye(5)ans =

1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1

La matriz identidad

Page 42: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Existen comandos que permiten crear de forma sencilla matrices.Por ejemplo:

>>zeros(3)ans =0 0 00 0 00 0 0

la matriz nula

Page 43: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Existen comandos que permiten crear de forma sencilla matrices.Por ejemplo:

>>ones(4)ans =1 1 1 11 1 1 11 1 1 11 1 1 1

o la matriz cuyos elementos valen todos 1:

Page 44: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

A r r e g l o s

Recorrido de un matriz

Para recorrer una matriz necesitamos dos bucles anidados. Por ejemplo, sise desea recorrer todos los elementos de la matriz A por filas, se escribirán

dos sentencias for anidadas:

Page 45: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

MATRICES

Ejemplo

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

A r r e g l o s

Page 46: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

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 anterioresM=[v1;v2;v3]

A r r e g l o s

Page 47: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

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]

A r r e g l o s

Page 48: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Buscar elemento Matrices

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

A r r e g l o s

Page 49: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma y resta de arreglos

A r r e g l o s

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

Page 50: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma y resta de arreglos

A r r e g l o s

Page 51: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Suma y resta de arreglos

A r r e g l o s

Page 52: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Multiplicación de arreglos

A r r e g l o s

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

Page 53: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Multiplicación de arreglos

A r r e g l o s

Page 54: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

Multiplicación de arreglos

A r r e g l o s

Page 55: Arreglos Ok

S egu rida d en I n tern etOriol Roca M a t L a b

www.upibi.net

EjerciciosEjercicios

Un programa que pida al usuario el tamaño de las filas y las columnas.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.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 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.suma de los números pares e impares contenidos en la matriz.

A r r e g l o s