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