При манипулировании матрицами часто бывает удобно менять свою форму. Например, чтобы преобразовать матрицу размера N x M в вектор длины N X M. В MATLAB существует функция изменения:
RESHAPE (X, M, N) возвращает матрицу M-by-N, элементы которой берутся по столбцам из X. Ошибка возникает, если X не содержит элементов M * N.
В случае преобразования между матрицей и вектором я могу использовать функцию Mathematica Flatten, которая использует математическое представление Mathematica для матриц. В качестве быстрого примера предположим, что у меня есть матрица X:
С Flatten [X] я могу получить вектор {1,2,3,..., 16}. Но что было бы гораздо полезнее, это нечто похожее на применение Matlab reshape (X, 2,8), которое приведет к следующей матрице:
Это позволило бы создать произвольные матрицы, если бы размеры равны N * M. Насколько я могу судить, нет ничего, что заставило бы меня задуматься, не кто-то не закодировал собственную функцию Решайпа.