Abstracto:
Entonces, como lo entiendo (aunque tengo una comprensión muy limitada), hay tres dimensiones con las que (generalmente) trabajamos físicamente:
El primero estaría representado por una línea.
El segundo estaría representado por un cuadrado.
El tercero estaría representado por un cubo.
Suficientemente simple hasta llegar a la 4ta . Es un poco difícil dibujar en un espacio 3D, si sabes a lo que me refiero ... Algunas personas dicen que tiene algo que ver con el tiempo .
La pregunta:
Ahora, aunque eso no tiene mucho sentido, eso es genial para mí. Mi pregunta no es sobre esto, o lo estaría haciendo en MathSO o PhysicsSO. Mi pregunta es: ¿Cómo maneja la computadora esto con las matrices?
Sé que puede crear matrices 4D, 5D, 6D, etc. en muchos lenguajes de programación diferentes, pero quiero saber cómo funciona.
Respuestas:
Afortunadamente, los programas no están limitados por las restricciones físicas del mundo real. Las matrices no se almacenan en el espacio físico, por lo que no importa el número de dimensiones de la matriz. Se aplanan en memoria lineal. Por ejemplo, una matriz unidimensional con dos elementos podría presentarse como:
Una matriz dimensional de 2x2 podría ser:
Una matriz tridimensional de 2x2x2 podría ser:
Esperemos que pueda ver a dónde va esto. Cuatro dimensiones pueden ser:
fuente
int a[2][2][2];
sería una matriz tridimensional.No necesita imaginar en grandes dimensiones espaciales, solo piense en ello como una hoja de helecho.
El tallo principal es su primera matriz, y cada rama es un elemento que está almacenando. Si miramos una rama, esta es su segunda dimensión. Tiene una estructura similar de ramas más pequeñas que representan sus datos. Estos a su vez tienen sus propias ramas pequeñas que continúan hasta llegar a las pequeñas hojas que representan los datos de la matriz de dimensión más alta o más interna.
Puede ver esta acumulación si declara cada nivel con su propio nombre. Aquí estoy reutilizando cada variable de nivel para minimizar el código:
fuente
Las dimensiones son lo que quieras ser, la cuarta dimensión no necesariamente tiene que ser el tiempo. Si piensa en tres dimensiones como un cubo, puede pensar en 4 dimensiones como una fila de cubos. 5 dimensiones, una cuadrícula de cubos, etc.
También podría tener una colección 3D de vóxeles, con una cuarta dimensión que es el color, la densidad o alguna otra propiedad.
Cuando asigna la memoria para su matriz multidimensional, simplemente asigna el producto de cada dimensión máxima para su tipo de datos. Si tiene una matriz 3D o 'cubo' de 10 elementos en cada dimensión, tendrá 1,000 elementos asignados. Si lo convierte en una matriz 4d con 10 elementos en la 4ta dimensión, la computadora solo asignará 10,000. Aumente hasta 5 dimensiones y asignará 100,000.
A la computadora no le importa ningún tipo de significado sobre lo que representa cada dimensión. Para seleccionar en qué parte de la lista de elementos se encuentra un solo punto, es solo multiplicación seleccionar una dirección de memoria.
fuente
Imagínese haciendo I + D en un nuevo dispositivo médico, una serie de sensores que coloca a lo largo de los brazos de un paciente. Tienes siete voluntarios en fila para las pruebas. Cada sensor informa lecturas de baja frecuencia, frecuencia media y alta frecuencia, que toma una vez cada 100 ms durante aproximadamente un minuto.
¿Cómo almacenar todos esos datos en la memoria para su análisis y trazado?
Una matriz, obviamente. Se vería así (usando un pseudocódigo genérico inventado):
Esa es una matriz de cinco dimensiones, y no hay nada complicado, misterioso o desconcertante al respecto. No hay razón para intentar asociarlo con el espacio euclidiano de 5 dimensiones. Para obtener cualquier valor de datos, usamos una expresión como
Es como consultar una base de datos relacional donde tiene un registro para cada valor de datos, con cinco columnas que contienen la identificación del paciente, la identificación del sensor, etc., y una columna con el valor. Para obtener un punto de datos, utilice cinco términos en WHERE: SELECCIONE el valor de SensorData WHERE (patientid = 6) y (sensorid = 5) y (arm = "left") y (channel = "midfreq") y (sampleindex = 338 )
No hay nada místico sobre una tabla de base de datos con cinco o más columnas, ¿verdad?
(Estoy usando indexación basada en 1, aunque en la vida real, la basada en 0 es mucho más común).
Tenga en cuenta que soy un chico malo debido a la codificación de la cantidad de armas. Si alguna vez me dan fondos para investigar estos sensores en un pulpo, ¡estoy en problemas!
fuente
Una matriz es solo un bloque de memoria continua. El direccionamiento de memoria es unidimensional, puede avanzar o retroceder. Asumiendo que tiene una matriz con 5 elementos, se reservarán 5 bloques de memoria. Si tiene una matriz bidimensional con 5 elementos en cada dimensión, se reservarán 25 bloques de memoria.
fuente
Bueno, de hecho, los matemáticos nunca (o al menos no usualmente) asociarían una cuarta dimensión con algo como el tiempo. Tampoco asociarían los primeros tres con nada parecido al espacio: los matemáticos simplemente definen la dimensión como una propiedad abstracta de, típicamente, un espacio vectorial (a menudo esto se generalizará a múltiples o incluso espacios métricos ). Y a esta definición abstracta no le importan cuántas dimensiones tiene el espacio físico en el que nos movemos. El concepto de dimensiones se aplica a espacios que ni siquiera se parecen al espacio físico. De hecho, los matemáticos (y de hecho los físicos) muy a menudo usan dimensiones infinitas espacios, como los espacios de Hilbert de la mecánica cuántica.
Con eso aclarado, hablemos de matrices: no es necesario que comprenda los espacios vectoriales, ya que la definición abstracta es en realidad mucho más simple aquí.
An ( ℓ 0 × ℓ 1 × ℓ 2 × ... × ℓ n -1 ) array -sized (es decir, de dimensión n ) es simplemente una colección de ℓ 0 ⋅ ℓ 1 ⋅ ... ⋅ ℓ n -1 números ( o cualquier tipo de objeto que llena la matriz). La única diferencia con una matriz unidimensional de esa longitud es que tiene una forma útil particular de indexar las dimensiones por separado, es decir
i lin = i n −1 + ℓ n −1 ⋅ ( i n −2 + ℓ n −1 ⋅ (... ℓ 2 ⋅ ( i 1 + ℓ 1 ⋅ i 0 ) ...))
fuente
imshow
en Python): puede mostrar dos dimensiones espaciales y una tercera dimensión de color.En programación, las matrices son bastante fáciles de implementar, pero tal vez no se entiendan.
Generalmente, cada nivel de matrices significa tener el contenido
n
plegado. Eso significaint x[4]
son 4 bloques, cada uno de ellos contiene unint
.int x[5][4]
son 5 bloques, cada uno de ellos contiene unint[4]
.int x[3][5][4]
son 3 bloques, cada uno de ellos contiene unint[5][4]
.int x[2][3][5][4]
son 2 bloques, cada uno de ellos contiene unint[3][5][4]
.La forma en que te refieres a ellos depende de ti, pero para una mejor comprensión, tienes algo como
COLUMN
para el últimoROW
para el penúltimoPAGE
para el penúltimoHasta aquí, lo leí en alguna parte. Para quedarnos aquí, también podemos definir
BOOK
para el penúltimoSHELF
para el quinto y último. (O, si lo prefiere,SHELFROW
para que podamos continuar).Dicho esto, nunca vi una matriz con más de 4 o quizás 5 dimensiones en "vida salvaje".
De esta manera, puede definir e imaginar
int x[6][2][3][5][4]
como una colección de 6 "estantes", cada uno con 2 libros, cada uno con 3 páginas, cada uno con 5 filas, cada uno con 4 columnas.fuente
Piense en una matriz unidimensional como una cómoda:
Cada cajón es un índice de la matriz. Puede poner lo que quiera en cada cajón, y para muchos propósitos, cada cajón solo contendrá un único elemento (que es una matriz unidimensional).
Sin embargo, esta cómoda es mágica, por lo que no está limitada por el espacio físico. Eso significa que puede colocar otra cómoda dentro de cada gaveta de la primera cómoda. Las cajoneras interiores pueden contener lo que quieras. Esa es una matriz bidimensional.
Entonces puede decir algo como "abra el cajón superior de la primera cómoda, saque la cómoda de ese cajón, luego abra el cajón inferior de esa segunda cómoda". Eso sería como acceder a un índice de una matriz 2D: myArray [0] [3];
Y, por supuesto, las cajoneras dentro de la cajonera más exterior pueden contener cajoneras. Esa es una matriz tridimensional.
Entonces, su pregunta es: ¿qué es una matriz de cuatro dimensiones? Es una cómoda de cómodas, de cómodas, de cómodas, de cómodas, por supuesto.
Son cajones hasta el fondo.
fuente
myArray[0][3]
eso seríamyArray[0][2]
. Pero por lo demás buena explicación.La mayoría de los aspectos de esta pregunta ya se han considerado, pero creo que será útil si se considera la naturaleza de una dimensión. No todas las dimensiones son espaciales. Una dimensión es un contexto para la medición. Aquí hay unos ejemplos:
La "cuarta" dimensión es solo la cuarta porque hay tres dimensiones espaciales. El espacio y el tiempo se vislumbran porque, bueno, se vislumbran. Mucho en tu cara. Pero cualquier calidad cuantificable y medible puede ser una dimensión si la mide.
Por ejemplo, los sostenes tienen tres dimensiones: tamaño de copa, tamaño de cofre e intersticial (no sé cómo lo llaman ustedes, pero me refiero a la distancia entre tazas).
fuente
En física, suponemos que cada dimensión espacial es infinita, lo que hace que sea bastante difícil encontrar espacio para nuevas dimensiones.
Cuando se trata de matrices finitas, es fácil encontrar espacio.
Imagine una hoja de papel con una cuadrícula impresa; Puede escribir información en cada celda de la cuadrícula. Esa es una matriz 2D: fila y columna.
Ponga varias de esas hojas de papel en una carpeta de archivos; eso es una matriz 3D: página, fila y columna.
Ponga varias de esas carpetas en un cuadro de archivo. Matriz 4D: carpeta, página, fila, columna.
Organice las cajas en una cuadrícula rectangular sobre una paleta de madera. Matriz 6D: cuadro-fila, cuadro-columna, carpeta, página, fila, columna.
Apila más cuadrículas de cajas encima de ellas. Matriz 7D: profundidad de caja, fila de caja, columna de caja, carpeta, página, fila, columna.
Comience a meter paletas en un contenedor de envío: matriz 9D. (Suponiendo que cada pila es tan alta como el interior del contenedor, por lo que solo puede obtener 2 dimensiones más aquí).
Apile los contenedores de envío en la cubierta de un barco de contenedores: matriz 12D.
Su flota de portacontenedores ahora es una matriz 13D.
fuente
En el sistema de coordenadas cartesianas, tiene los ejes x e y en un plano. Puede representar cualquier número en el plano como (x, y).
En tres "espacios" (también conocido como cubo), puede tener los ejes x, y y z. Puede representar cualquier elemento del cubo como (x, y, z).
En el espacio multivariante, puede tener los ejes x, y, z y w (donde el eje w es "imaginario"). Puede representar cualquier elemento de ese espacio como (x, y, z, w).
Todos estos puntos en el espacio se denotan por vectores. En cuatro espacios, puede tener dos vectores, donde v1 = (x1, y1, z1, w1) y v2 = (x2, y2, z2, w2). Luego manipulas estos vectores como lo harías con los números. Por ejemplo, la suma de los dos vectores, v1 + v2 sería (x1, y1, z1, w1) + (x2, y2, z2, w2). Luego agrega estos vectores término por término como lo haría con los números, para obtener: (x1 + x2, y1 + y2, z1 + z2, w1 + w2).
Su programa definirá los vectores usando las matrices apropiadas y luego realizará operaciones aritméticas en ellos en el orden apropiado.
fuente