在操作矩阵时,通常需要改变它们的形状。例如,将一个N x M大小的矩阵转换为长度为 N X M 的向量。在 MATLAB 中存在一个 reshape 函数:
RESHAPE(X,M,N) 返回其元素按列顺序从 X 中取出所得的 M-乘-N 矩阵。如果 X 没有 M*N 个元素,则会发生错误。
在转换矩阵和向量之间的情况下,可以使用 Mathematica 函数 Flatten,该函数利用了 Mathematica 对矩阵的嵌套列表表示。例如,假设有一个矩阵 X:
通过 Flatten[X] 可以得到向量 {1,2,3,...,16}。但更有用的是类似于应用 Matlab 的 reshape(X,2,8) 的东西,这将导致以下矩阵:
这将允许创建任意矩阵,只要维度等于 N*M。据我所知,没有内置的函数可以实现这一点,这让我想知道是否有人编写了自己的 Reshape 函数。