Beruflich Dokumente
Kultur Dokumente
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) =
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
ans(:,:,1) =
1 1 1
1 1 1
1 1 1
ans(:,:,2) =
ans(:,:,3) =
>> N=M(:,:,3)'
N=
>>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
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