Calculo de la posición de un elemento dentro de una matriz/vector/array 2D y 3D

1,440 views
Skip to first unread message

Luis Belmonte Abellan

unread,
May 14, 2012, 12:46:09 AM5/14/12
to log...@googlegroups.com
Los siguientes ejemplos muestran como saber la posición o número de
orden de un elemento dentro de un vector 2D o 3D, sin contarlos, ni
usar bucles.

Ejemplo #1 2D:

1º) Definimos el vector patrón, por ejemplo de 5 x 5 elementos.

Este vector contendrá 5 filas x 5 columnas = 25 elementos.

2º) Ahora queremos saber que numero de orden ocupa el elemento (4, 3).

Esto significa que el elemento a localizar esta posicionado en la fila
4 y en la columna 3.

3º) Los elementos se cuentan de izquierda a derecha siempre.

4º) Definamos las variables:
F: Numero de filas del vector patrón
C: Numero de columnas del vector patrón
R: Fila del elemento a buscar
K: Columna del elemento a buscar

5º) La fórmula para localizar un elemento en un vector 2D
Posición = ((R – 1) * C) + K
Posición = ((4 – 1) * 5) + 3
Posición o numero de orden dentro de un vector 2D = 18

Este sería el numero de orden que tendría el elemento (4,3) dentro del
vector 2D patrón de 5 filas x 5 columnas, contando de izquierda a
derecha los elementos.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Ejemplo #2 2D:

Al igual que en ejemplo anterior, definamos un vector patrón de 7000
filas * 8000 columnas.

En este caso, el vector contendrá: 56.000.000 elementos

Ahora deseamos saber que numero de orden ocupa el elemento que se
encuentra en la fila 5438 y en la columna 3927.

Como observamos, no es para estar contando elementos dentro del vector.

Aplicamos la fórmula para localizar el elemento dentro del vector 2D
Posición = ((R – 1) * C) + KPosición o numero de orden dentro de un
vector 2D = 43.499.927

Ahora vamos a localizar un elemento dentro de un vector 3D

Posición = ((5438 – 1) * 8000) + 3927

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Ejemplo #1 3D

1º) Definimos el vector patrón 3D, por ejemplo de 3 x 3 x 3 elementos.

Este vector contendrá 3 filas x 3 columnas x 3 niveles = 27 elementos.

2º) Ahora queremos saber que numero de orden ocupa el elemento (3, 2,3).

Esto significa que el elemento a localizar esta posicionado en la fila
4 , en la columna 2 y en el nivel 3

3º) Los elementos se cuentan de izquierda a derecha y del nivel
superior hacia el inferior

4º) Definamos las variables:
F: Numero de filas del vector patrón
C: Numero de columnas del vector patrón
N: Numero de niveles del vector patrón
R: Fila del elemento a buscar
K: Columna del elemento a buscar
L: Nivel del elemento a buscar

5º) La fórmula para localizar un elemento en un vector 3D
Posición = ((R – 1) * C) + K + ((F * C) * (L – 1))
Posición = ((3 – 1) * 3) + 2 + ((3 * 3) * (3 – 1))
Posición o numero de orden dentro de un vector 3D = 26

Este sería el numero de orden que tendría el elemento (3,2,3) dentro
del vector 3D patrón de 3 filas x 3 columnas X 3 niveles contando de
izquierda a derecha los elementos y de arriba abajo.

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Ejemplo #2 3D:

Al igual que en ejemplo anterior, definamos un vector patrón de 700
filas * 800 columnas * 500 niveles

En este caso, el vector contendrá: 280.000.000 elementos

Ahora deseamos saber que numero de orden ocupa el elemento que se
encuentra en la fila 658 en la columna 731 y en el nivel 483

Como vemos, tenemos que pensar mucho antes de iniciar el contaje.

Aplicamos la fórmula para localizar el elemento dentro del vector 3D

Los elementos siempre se cuentan de izquierda a derecha y del nivel
superior hacia el inferior

Ahora definamos las variables:
F: Numero de filas del vector patrón
C: Numero de columnas del vector patrón
N: Numero de niveles del vector patrón
R: Fila del elemento a buscar
K: Columna del elemento a buscar
L: Nivel del elemento a buscar

La fórmula para localizar un elemento en un vector 3D
Posición = ((R – 1) * C) + K + ((F * C) * (L – 1))
Posición = ((658 – 1) * 800) + 731 + ((700 * 800) * (483 – 1))
Posición o numero de orden dentro de un vector 3D = 270.446.331

Después de ver donde se encuentran los elementos en los ejemplos #2
del vector 2D y 3D, nos lo pensaremos dos veces antes de empezar a
contar por ejemplo un palet de ladrillos.

Estas mismas formulas y sus posteriores desarrollos para 4D, 5D, 6D…
se pueden aplicar en informática para localizar un elemento dentro de
estos vectores o en matematicas, para localizar la posición de un
elemento dentro de un eje de coordenadas 2D o 3D.

Igualmente, basándonos en la posición que ocupa un elemento dentro de
un vector 2D o 3D, podemos buscar su equivalente en vectores 1D.

Luis Belmonte Abellan

unread,
May 14, 2012, 2:17:07 PM5/14/12
to log...@googlegroups.com
Formulas para el calculo del numero de orden en la posicion de un
elemento dentro de un array.

Array 2D

Array origen Z (5,6) = (row, col)

Posicion el elemento a buscar Z (4,5)= (a,b)

Posicion = ((a - 1) * col) + b

Posicion = ((4 - 1) * 6) + 5 = 23

::::::::::::::::::::::::::::::::::::::::::::::::::::::

Array 3D

Array origen Z (5,6,7) = (row, col, level)

Posicion el elemento a buscar Z (4,5,6) = (a,b,c)

Posicion = ((a - 1) * col) + b + ((row * col) * ( level - 1))

Posicion = ((4 - 1) * 6) + 5 ((5 * 6) * (7 - 1)) =


::::::::::::::::::::::::::::::::::::::::::::::::::::::

Array > 3D

Array origen Z (5,6,7,8) = (row, col, level,dimension)

Posicion el elemento a buscar Z (4,5,7,8) = (a,b,c,d)

Posicion = ((a - 1) * col) + b + ((row * col) * (level - 1)) + (row *
col * level) * (dimension -1))

Posicion = ((4 - 1) * 6) + 5 ((5 * 6) * (7 - 1)) + (5 * 6 * 7) * (8 - 1)) =

:::::::::::::::::::::::::::::::::::::::::::::::::::::

Si dimensiones > 3D :

Array origen Z (5,6,7,8) = (row, col, level,d1)

dx = d1

Array origen Z (5,6,7,8,9) = (row, col, level,d1,d2)

dx = d1 * d2


Array origen Z (5,6,7,8,9,10) = (row, col, level,d1,d2,d3)

dx = d1 * d2 * d3
Reply all
Reply to author
Forward
0 new messages