8

Sé cómo simular una matriz 2d en una matriz lineal utilizando [x + y * width] como un índice lineal.simulación lineal de matriz multidimensional

Puedo extender esto a arreglos en 3D: [x + y * width + z * width * height].

¿Existe una fórmula general para la matriz N-dimensional?

Estoy buscando una respuesta agnóstica.

Respuesta

7

Sure. Sólo la ampliación de su ejemplo da x + y*width + z*width*height + w*width*height*depth + ...

En otras palabras, dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

1

Eh, si quieres algo de código ... :-) C es independiente del idioma suficiente, ya?

Supongamos entrada: ubicación [dimensiones]

asumir una tabla existe maxBound [dimensiones] que contiene los límites máximos de cada dimensión de la mesa.

int index = 0; 
int multiplier = 1; 
for (int i = 0;i < dimensions;i++) 
{ 
    index += location[i] * multiplier; 
    multiplier *= maxBound[i]; 
} 

Su índice terminará en el campo de índice.

Test: 
location = [3,4,5] 
maxBound = [10,20,30] 
loop initial: index = 0, multiplier = 1. 
loop i=0: index = 3, multiplier = 10. 
loop i=1: index = 43, multiplier = 200. 
loop i=2: index = 1043, multipler = 6000. 

Creo que esto tiene sentido, pero esto está saliendo de mi cabeza.

Cuestiones relacionadas