Sie sind auf Seite 1von 5

c   


   

Una hipermatriz es una matriz de más de dos dimensiones. Estas matrices pueden estar
conformadas por elementos de distintos tipos como son números, caracteres, estructuras
y vectores o matrices de celdas. Una aplicación puede ser el almacenar varias matrices
con un solo nombre, estas matrices tiene que ser del mismo tamaño.
En la figura siguiente podemos observar tres subíndices los cuales representan las
dimensiones ³ancho´, ´altura´ y ³profundidad´.
Ejemplo: Definimos una Hipermatriz:
>> R(:,:,1)=[3,5,7;10 3 2;4 9 1];
>> R(:,:,2)=[4,2,9;0 2 8;1 7 2];
>> R(:,:,3)=[0,6,1;8 1 3;8 2 4];
>> R
R(:,:,1) =

3 5 7
10 3 2
4 9 1

R(:,:,2) =

4 2 9
0 2 8
1 7 2

R(:,:,3) =

0 6 1
8 1 3
8 2 4

En R(:,:,n), aquí ³n´ puede es el numero de matriz o asemejando capas una tras otra, en
el ejemplo la matriz R(:,:,1) llegaría a ser la primera capa de la hipermatriz, R(:,:,2) la
segunda capa, y así sucesivamente. Los dos punto ³:´ representan respectivamente todas
las columnas y todas las filas de la matriz.

Ejemplo:

>>C(1:2,1:2,1)=[2 5;8 4];


>>C(1:2,1:2,1)=[2 5;8 4];C(3:4,3:4,3)=[6 0;2 9];
>> C

C(:,:,1) =
C(:,:,2) =
2 5 0 0 C(:,:,3) =
8 4 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 6 0
0 0 2 9
En el ejemplo anterior se puede notar que para la generación de hipermatrices podemos
utilizar comandos análogos a los utilizados en matrices normales, también podemos notar
que si no definimos una ³capa´ esta se auto establece con una matriz nula y de igual
manera sucede con los elementos que no han sido definidos.

: 

    
Las funciones que son aplicables en hipermatrices son aquellas que permiten más de dos
subíndices, entre estas tenemos: rand(), randn(), zeros(), ones(),size(), ndims(),
squeeze(), reshape(), permute(B,u), ipermute(B,u)
Ejemplos:
>>size(M)
>>
M(:,:,1)=zeros(3);M(:,:,2)=ones(3);M(:,:,3) ans =
=randn(3);
>> M 3 3 3
M(:,:,1) =
>>ndims(M)
0 0 0
0 0 0 ans =
0 0 0
3
M(:,:,2) =
>>reshape(M,3,9)
1 1 1
1 1 1 ans =
1 1 1
Columns 1 through 6
M(:,:,3) =
0 0 0 1.0000 1.0000
2.7694 0.7254 -0.2050 1.0000
-1.3499 -0.0631 -0.1241 0 0 0 1.0000 1.0000
3.0349 0.7147 1.4897 1.0000
0 0 0 1.0000 1.0000
1.0000

Columns 7 through 9

2.7694 0.7254 -0.2050


-1.3499 -0.0631 -0.1241
3.0349 0.7147 1.4897
?
El resultado de cada función aplicable es el siguiente:
size() devuelve un vector fila donde sus elementos son las dimensiones de la hipermatriz
ndims() devuelve el número de dimensiones de la hipermatriz.
squeeze() elimina las dimensiones que son igual a uno.
reshape() distribuye el mismo número de elementos en una matriz condistinta forma o con
distintas dimensiones
permute(A,v) permuta las dimensiones de A según los índices del vector v
ipermute(A,v) realiza la permutación inversa
En el caso de las funciones que son aplicables en escalares, estas funciones son
aplicadas también a las hipermatrices con la diferencia que la función es aplicada a cada
elemento de la hipermatriz, otras funciones que se usan en vectores y matrices también
son aplicables en hipermatrices como son min(), sum(), y funciones específicas de
matrices como son la transpuesta o inversa son aplicables pero solo si son definidas a
³capas´ de la hipermatriz de lo contrario no son aplicables sobre toda la hipermatriz.
Ejemplos:
Trabajando con la matriz M definida en el ejemplo anterior:
>>cos(M)

ans(:,:,1) =

1 1 1
1 1 1
1 1 1

ans(:,:,2) =

0.5403 0.5403 0.5403


0.5403 0.5403 0.5403
0.5403 0.5403 0.5403

ans(:,:,3) =

-0.9315 0.7482 0.9791


0.2191 0.9980 0.9923
-0.9943 0.7553 0.0810

>> N=M(:,:,3)'

N=

2.7694 -1.3499 3.0349


0.7254 -0.0631 0.7147
-0.2050 -0.1241 1.4897

      
Define una agrupación de datos de diferente tipo con un mismo nombre, los datos son
llamados miembros o campos (miembros o fields). Una estructura es un dato del cual
posteriormente se pude generar variables. Para crearlos no hace falta definir previamente
su modelos, simplemente podemos crear los campos uno por uno también con el
comando struct. El contenido de cada campo se lo escribe entre apóstrofe (µ) ejemplo:

>>estudiante.nombre='Carlos';estudiante.apellido='Chuquisala';
>>estudiante.cedula='1720971058';estudiante.Carrera='Control';
>>estudiante.semestre='Tercero';estudiante.edad='19';estudiante

estudiante =
nombre: 'Carlos'
apellido: 'Chuquisala'
cedula: '1720971058'
Carrera: 'Control'
semestre: 'Tercero'
edad: '19'
Y otra manera de crear una estructura es con la función struct como el ejemplo siguiente:
>>estudiante2=struct('nombre','Darwin','apellido','Calahorrano','cedula','1783957284','carre
ra','Control','semestre','Tercero','edad','22')

estudiante2 =
nombre: 'Darwin'
apellido: 'Calahorrano'
cedula: '1783957284'
carrera: 'Control'
semestre: 'Tercero'
edad: '22'
para definir de esta manera se debe poner tanto el nombre como el contenido del campo
entre apóstrofe y separados uno tras otro secuencialmente y por una coma.
Tambien se pueden crear matrices cuyos componentes son las estructuras por ejemplo:

>>estud(1)=estudiante;estud(2)=estudiante2;
>>estud

estud =
1x2 struct array with fields:
nombre
apellido
cedula
carrera
semestre
edad

y para visualizar los elementos podemos hacer lo siguiente:


>>estud.edad
ans =

19

ans =

22
@   
Es una estructura en donde los campos son otras estructuras, para poder visualizar los
elementos internos de la estructura oséa los elementos del elemento de la estructura
principal se utiliza el operador (.) dos veces o las veces que sea necesario.
>>elequimico=struct('nombre','hidrogeno','propiedades',struct('pesatom','1','numatom','1'))

elequimico =
nombre: 'hidrogeno'
propiedades: [1x1 struct]

>>elequimico.propiedades
ans =

pesatom: '1'
numatom: '1'
:    @   
Existen algunas funciones en Matlab para aplicar en estructura, las mismas que facilitan
su uso, entre ellas tenemos a :
á
  genera un vector columna con los nombres de los campos de la estructura.
á
 permite saber si el campo c pertenece a una estructura E; devuelve un valor
de 0 si es falso y un valor de 1 si es verdadero.
  nos da a saber si E es o no una estructura.
á
 elimina el campo c de la Estructura E.
á
devuelve el contenido del campo c que pertenece a la estructura E.
á
 le da el valor de v a el campo c de la estructura E.
Ejemplos:
>>fieldnames(estud)

ans =
'nombre'
'apellido'
'cedula'
'carrera'
'semestre'
'edad'
>>rmfield(estud,'cedula')

ans =
1x2 struct array with fields:
nombre
apellido
carrera
semestre
edad

>>getfield(estud,'edad')

ans =
19

>>isstruct(estud)

ans =
1


Aprenda MatLab como si estuviera en Primero, RODRÍGUEZ José. VIDAL Jesus.
GARCIA Javier, Escuela Técnica Superior de Ingenieros Industriales, Madrid Diciembre
2005, Capítulo 5, págs. 53-55.
Manual Básico de Matlab, CASADO FERNÁNDEZ Cristina, Servicios Informáticos U.C.M
apoyo a investigación y docencia, Capítulo 6, págs. 22-25,R ?
http://www.sisoft.ucm.es/Manuales/MATLAB_r2006b.pdf

Das könnte Ihnen auch gefallen