Sunteți pe pagina 1din 4

Fonaments dInformtica 1r curs dEnginyeria Industrial

Prctica 7: Vectores y Matrices (II)


Objetivos de la prctica El objetivo de las prcticas 6 y 7 es introducir las estructuras de datos vector y matriz en el lenguaje MATLAB. MATLAB es fundamentalmente un programa para el clculo matricial.

Matrices Una matriz es, como el vector, una coleccin de elementos del mismo tipo. Sin embargo, mientras el vector es unidimensional una sla fila o columna en la matriz los datos se organizan en dos o ms dimensiones. Por ejemplo, a continuacin tenemos una matriz M de dimensin 3x4 (3 filas x 4 columnas):
1 1 2 3 2 3 4

-5 3 6

4 2 3

1 10 -1

-2 -5 0

Para acceder a los elementos de una matriz n-dimensional necesitamos n ndices. En el caso de la matriz anterior, para acceder a cualquiera de sus elementos debemos escribir el nombre de la matriz y entre parntesis la fila y columna en la que est: matriz (fila, columna). Por ejemplo: M(3, 2), M(1, 4), etc.

Definir matrices en MATLAB En MATLAB, se puede definir la matriz anterior M del siguiente modo: M = [-5, 4, 1, -2; 3, 2, 10, -5; 6, 3, -1, 0] Es decir, los elementos de cada fila se separan por puntos y comas. Mientras que los elementos de la misma fila estn separados por comas (o espacios en blanco). MATLAB dispone de un gran nmero de funciones para construir matrices predefinidas. Se puede inicializar una matriz a ceros (todos los elementos son 0) mediante la funcin zeros. Por ejemplo: >> M=zeros(3) % inicializa a 0' una matriz s M = % cuadrada 3x3 0 0 0 0 0 0 0 0 0 >> A = zeros (3, 5) % inicializa a 0' una s A = % matriz 3x5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Se recomienda inicializar todas las matrices que se utilicen a ceros. Tambin est predefinida la matriz identidad llamando a la funcin eye: >> eye(3) ans= 1 0 0 0 1 0 0 0 1 Otra funcin muy til es size(mat). Esta funcin devuelve un vector con las dimensiones de la matriz. Por ejemplo, para las matrices anteriores M y A devolver: >> [nfilasM, ncolsM]=size(M) nfilasM = 3 ncolsM = 3 >>[nfilasA, ncolsA]=size(A) nfilasA = 3 ncolsA = 5

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 escribirn dos sentencias for anidadas: for i=1: nfilasA % para cada fila for j=1: ncolsA sentencias end end Tambin es posible recorrer la matriz por columnas: for j=1: ncolsA % para cada columna for i=1: nfilasA sentencias end end O recorrer la matriz triangular superior de una matriz cuadrada: for i=1: nfilasM for j=i: ncolsM sentencias end end Y de forma similar para la triangular inferior. Ejercicio: Qu instrucciones necesitaremos para escribir los elementos de la diagonal de una matriz cuadrada? Son necesarios dos bucles? Ejercicios 1. Escribir una funcin que sume todos los elementos de una matriz numrica de tamao n x m. 2. Escribir una funcin que devuelva la media de los elementos de una matriz numrica de tamao n x m. 3. Un profesor quiere analizar los resultados de los exmenes que propone a sus alumnos. Cada alumno se examina 3 veces en un curso. Y en cada ocasin realiza dos tipos de examen: un test y uno de problemas. Por tanto, en total son 6 exmenes por alumno. a) Calcular la media por cada tipo de examen en cada convocatoria. La funcin debe devolver un vector con las 6 medias.

b) Calcular la media por alumno. Tambin se devolver un vector con todas las medias. c) Escribir una funcin que indique el nmero de alumnos cuya nota media es superior a la media de todos los exmenes para todos los alumnos. Ejemplo de matriz para este ejercicio:
Alu mno

1 2 3 4 5 6 7 8 9 10

T1 1 9.3 3.5 9.1 4.5 8.2 3.5 7.4 2.5 8.6 6.2

P1 2 4.8 5.2 8.6 5.6 7.0 5.2 3.5 3.5 7.1 3.7

exmenes T2 P2 3 4 5.3 6.9 5.9 7.5 5.6 8.4 6.0 6.5 7.9 9.5 4.5 6.5 6.5 5.4 4.3 3.1 9.4 6.5 4.5 6.9

T3 5 7.4 6.4 7.5 6.5 9.2 4.0 6.1 6.2 8.9 5.5

P3 6 8.8 3.9 6.9 8.0 9.4 6.0 6.5 4.1 7.5 5.5

En la pgina web de la asignatura tenis un fichero de texto examen.txt' con estos datos que podis utilizar. Para leer los datos ' del fichero en una matriz M, basta con escribir la instruccin: M= load (' nombre_fichero' ); 4. Tres en raya. Para jugar al 3 en raya se utiliza una matriz 3x3. Las casillas ocupadas por el primer jugador tienen un 1, las ocupadas por el segundo tienen un 2 y las que estn libres un 0. a) Escribir una funcin que indique si el jugador 1 tiene "3 en raya" en horizontal. b) Escribir una funcin que indique si el jugador 1 tiene "3 en raya" en vertical. c) Escribir una funcin que indique si el jugador 1 tiene "3 en raya" en cualquiera de las dos diagonales del tablero. d) Utilizando las funciones anteriores, escribir una funcin que indique si el jugador 1 tienen 3 en raya (en cualquier posicin). 5. Disear una funcin que multiplique dos matrices. Para ello, el nmero de columnas de la primera debe ser igual al nmero de filas de la segunda. La funcin debe mostrar un mensaje si esto no se cumple y, por tanto, no es posible realizar la multiplicacin.

S-ar putea să vă placă și