【发布时间】:2010-03-18 06:42:48
【问题描述】:
在处理矩阵时,改变它们的形状通常很方便。例如,要将 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}。但更有用的是类似于应用 Matlab 的 reshape(X,2,8) 会产生以下矩阵:
这将允许创建任意矩阵,只要维度等于 N*M。据我所知,没有任何内置的东西让我想知道是否有人没有编写自己的 Reshape 函数。
【问题讨论】: