Herramientas computacionales para la matemática MATLAB: Arreglos Verónica Borja Macías Marzo 2013 1 Matlab Arreglos: hipermatrices Hasta el momento hemos estudiado la generación de vectores y matrices, es decir, hemos manejado un máximo de dos dimensiones. Las hipermatrices son matrices que manejan tres o más dimensiones. Para entender esto pondremos como ejemplo la hipermatriz T, de 3 dimensiones. 2 Matlab Arreglos: hipermatrices 3 Matlab Arreglos: hipermatrices La representación anterior nos sugiere que esta hipermatriz se trata del conjunto de matrices de iguales dimensiones una sobre la otra. Los elementos de una hipermatriz pueden ser números, caracteres, estructuras y vectores o matrices de celdas. 4 Matlab Arreglos: hipermatrices La representación de más de 3 dimensiones se vuelve más compleja y difícil de representar gráficamente en 2 dimensiones. Nuestros sentidos no están preparados para manejar más de 3 dimensiones; sin embargo, en diversos campos como la ingeniería siempre se tienen problemas que requieren del manejo de ndimensiones. MATLAB, con las hipermatrices nos puede ayudar haciendo cálculos sobre estructuras de mas de dos dimensiones. 5 Matlab Arreglos: creación de hipermatrices Ejemplo >> T(:,:,1) = [1 2 3; 4 5 6]; % definimos la primera capa >> T(:,:,2) = [7 8 9; 10 11 12] % definimos la segunda capa >> T(:,:,3)=[0 0 0; 0 0 6] % definimos la tercera capa T(:,:,1) = 1 2 3 4 5 6 T(:,:,2) = 7 8 9 10 11 12 T(:,:,3) = 0 0 0 0 0 6 6 Matlab Arreglos: creación de hipermatrices Ejemplo >> A(:,:,1)=[linspace(1,3,3);4 5 6] ; >> A(:,:,2)=zeros(2,3); >> A(:,:,3)=ones(2,3); >> A A(:,:,1) = 1 2 3 4 5 6 A(:,:,2) = 0 0 0 0 0 0 A(:,:,3) = 1 1 1 1 1 1 7 Matlab Arreglos: creación de hipermatrices Algunas funciones para generar matrices admiten más de dos subíndices y pueden ser utilizadas para generar hipermatrices como rand, randn, zeros y ones. Ejemplo >> A=rand(2,3,3) A(:,:,1) = 0.4898 0.6463 0.4456 0.7094 A(:,:,2) = 0.6797 0.1626 0.6551 0.1190 A(:,:,3) = 0.3404 0.2238 0.5853 0.7513 0.7547 0.2760 0.4984 0.9597 0.2551 0.5060 8 Matlab Arreglos: creación de hipermatrices También se pueden emplear con hipermatrices las funciones size y reshape entre otras. Ejercicio >> A=rand(2,3,3); >> reshape(A,3,3,2) ans(:,:,1) = 0.4898 0.7094 0.4456 0.7547 0.6463 0.2760 ans(:,:,2) = 0.1190 0.3404 0.4984 0.5853 0.9597 0.2238 0.6797 0.6551 0.1626 0.7513 0.2551 0.5060 La función cat permite concatenar matrices según las distintas “dimensiones”. 9 Matlab Arreglos: creación de hipermatrices Ejemplo >> A = zeros (2,3); B = ones (2,3); % definimos dos matrices de las mismas dimensiones >> cat (1,A,B) % las concatena una debajo de la otra ans = 0 0 0 0 0 0 1 1 1 1 1 1 >> cat (2,A,B) % las concatena una al lado de la otra ans = 0 0 0 1 1 1 0 0 0 1 1 1 10 Matlab Arreglos: creación de hipermatrices Ejemplo >> A = zeros (2,3); B = ones (2,3); % definimos dos matrices de las mismas dimensiones >> cat (3,A,B) % las concatena como distintas capas de una hipermatriz ans(:,:,1) = 0 0 0 0 0 0 ans(:,:,2) = 1 1 1 1 1 1 11 Matlab Arreglos: creación de hipermatrices Ejemplo >> A = zeros (2,3); B = ones (2,3); % definimos dos matrices de las mismas dimensiones >> cat (3,A,B) % las concatena como distintas capas de una hipermatriz ans(:,:,1) = 0 0 0 0 0 0 ans(:,:,2) = 1 1 1 1 1 1 12 Matlab Arreglos: funciones aplicadas a hipermatrices Las funciones que operan sobre escalares, como sin, cos, etc., se aplican sobre hipermatrices elemento a elemento . Las funciones que operan sobre vectores, como sum, max, etc., se aplican a matrices e hipermatrices según la primera dimensión, resultando un array de una dimensión inferior. Las funciones matriciales propias del álgebra lineal, como det, inv, etc., no se pueden aplicar a hipermatrices, para aplicarlas habría que extraer las matrices correspondientes. 13 Matlab Arreglos: creación de hipermatrices Ejemplo >> A=rand(2,3,2) A(:,:,1) = 0.6991 0.9593 0.8909 0.5472 A(:,:,2) = 0.2575 0.2543 0.8407 0.8143 >> sin(A) ans(:,:,1) = 0.6435 0.8188 0.7776 0.5203 ans(:,:,2) = 0.2547 0.2516 0.7451 0.7272 0.1386 0.1493 0.2435 0.9293 0.1382 0.1487 0.2411 0.8012 14 Matlab Arreglos: creación de hipermatrices Ejemplo >> A=rand(2,3,2) A(:,:,1) = 0.6991 0.9593 0.8909 0.5472 A(:,:,2) = 0.2575 0.2543 0.8407 0.8143 >> sum(A) ans(:,:,1) = 1.5900 1.5065 ans(:,:,2) = 1.0982 1.0686 0.1386 0.1493 0.2435 0.9293 0.2879 1.1728 15 Matlab Arreglos: creación de hipermatrices Ejemplo >> A=rand(2,2,2) A(:,:,1) = 0.3500 0.2511 0.1966 0.6160 A(:,:,2) = 0.4733 0.8308 0.3517 0.5853 >> det(A) ??? Undefined function or method 'det' for input arguments of type 'double' and attributes 'full 3d real'. >> det(A(:,:,1)), det(A(:,:,2)) ans = 0.1662 ans = -0.0152 16