Ваш оригинальный M
-мерный контейнер A
.
Мы хотим создать новый N
-мерный контейнер B
, который будет содержать все содержимое A
.
Сначала мы должны выяснить отображение, в котором мы можем легко найти один и тот же элемент в A
и в B
.
Давайте рассмотрим несколько примеров, чтобы определить, каким может быть отображение:
(1) М = 2, N = 1
A: a * b B: c
we can set the dimension c to be a * b, thus we have
A[i][j] = B[i * c + j]
(2) М = 3, N = 1
A: a * b * c B: d
d = a * b * c
A[i][j][k] = B[(i * b * c) + (j * c) + k]
(3) M = 3, N = 2
A: a * b * c B: d * e
d = a, e = b * c
A[i][j][k] = B[i][j * c + k]
(4) M = 4, N = 1
A: a * b * c * d B: e
e = a * b * c * d
A[i][j][k][l] = B[(i * b * c * d) + (j * c * d) + (k * d) + l]
(5) М = 5, N = 4
A: a * b * c * d * e B: u * v * w * x
u = a, v = b, w = c, x = d * e
A[i][j][k][l][m] = B[i][j][k][(l * e) + m]
(6) М = 5, N = 2
A: a * b * c * d * e B: f * g
f = a, g = b * c * d * e
A[i][j][k][l][m] = B[i][(j * c * d * e) + (k * d * e) + (l * e) + m]
Если A имеет M измерений a1, a2, ..., aM и B имеет N измерений b1, b2, ..., bN, мы можем сказать, что:
, если M> N, то для всех 0
Таким образом, мы знаем, как создать B и Размер каждого измерения этого.
С помощью функции отображения, показанной в примерах, вы можете легко преобразовать любую матрицу M
в матрицу N
.
Если M < N
, вы можете выполнить то же самое, но в противоположном направлении.