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