首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数学中重构矩阵

如何在数学中重构矩阵
EN

Stack Overflow用户
提问于 2010-03-18 06:42:48
回答 5查看 11.1K关注 0票数 14

当操作矩阵时,往往很方便地改变它们的形状。例如,要将N大小的矩阵转换为长度为N的向量,在MATLAB中存在一个整形函数:

RESHAPE( X,M,N)返回从X中取元素为列的M-by-N矩阵,如果X没有M*N元素,就会产生误差。

在矩阵和向量之间转换的情况下,我可以使用Mathematica函数扁平化,它利用Mathematica对矩阵的嵌套列表表示。作为一个简单的例子,假设我有一个矩阵X:

用FlattenX,我可以得到向量{1,2,3,...,16}。但是,更有用的是类似于应用Matlab的整形(X,2,8),从而产生以下矩阵:

这将允许创建任意矩阵,只要维数等于N*M,据我所知,没有任何东西能让我怀疑是否有人没有编码出他们自己的重塑函数。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-18 06:53:18

代码语言:javascript
复制
Reshape[mtx_, _, n_] := Partition[Flatten[mtx], n]
票数 20
EN

Stack Overflow用户

发布于 2013-07-09 04:52:45

ArrayReshape正是这样做的。

票数 13
EN

Stack Overflow用户

发布于 2012-05-04 20:43:44

代码语言:javascript
复制
Reshape[list_, dimensions_] := 
First[Fold[Partition[#1, #2] &, Flatten[list], Reverse[dimensions]]]

示例用法:

代码语言:javascript
复制
In: Reshape[{1,2,3,4,5,6},{2,3}]

Out: {{1,2,3},{4,5,6}}

这适用于任意深度的数组。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2467961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档