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
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