reshape
通过重新排列现有元素来重构数组
说明
将 B
= reshape(A
,sz1,...,szN
)A
重构为一个 sz1
×...
×szN
数组,其中 sz1,...,szN
指示每个维度的大小。可以指定 []
的单个维度大小,以便自动计算维度大小,以使 B
中的元素数与 A
中的元素数相匹配。例如,如果 A
是一个 10×10 矩阵,则 reshape(A,2,2,[])
将 A
的 100 个元素重构为一个 2×2×25 数组。
示例
将向量重构为矩阵
将矩阵重构为具有指定的列数
将一个 4×4 方阵重构为一个 2 列矩阵。为第一个维度指定 []
以使 reshape
自动计算合适的行数。
A = magic(4)
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B = reshape(A,[],2)
B = 8×2
16 3
5 10
9 6
4 15
2 13
11 8
7 12
14 1
结果是一个 8×2 矩阵,它的元素数量与原始矩阵相同。B
也保持其在 A
中的列顺序。
将多维数组重构为矩阵
将一个由随机值组成的 2×2×3 数组重构为 6×2 矩阵。
rng default
A = rand(2,2,3)
A = A(:,:,1) = 0.8147 0.1270 0.9058 0.9134 A(:,:,2) = 0.6324 0.2785 0.0975 0.5469 A(:,:,3) = 0.9575 0.1576 0.9649 0.9706
B = reshape(A,6,2)
B = 6×2
0.8147 0.2785
0.9058 0.5469
0.1270 0.9575
0.9134 0.9649
0.6324 0.1576
0.0975 0.9706
输入参数
A
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| cell
| struct
| datetime
| duration
| calendarDuration
复数支持: 是
sz
— 输出大小
由整数组成的行向量
输出大小,指定为由整数组成的行向量。sz
的每个元素指示 B
中对应维度的大小。必须指定 sz
,以便 A
和 B
中的元素数目相同。即,prod(sz)
必须与 numel(A)
相同。
对于第二个维度以上的维度,输出 B
不反映大小为 1
的尾部维度。例如,reshape(A,[3,2,1,1])
生成 3×2 矩阵。
示例: reshape(A,[3,2])
示例: reshape(A,[6,4,10])
示例: reshape(A,[5,5,5,5])
sz1,...,szN
— 每个维度的大小
两个或以上的整数 | []
(可选)
每个维度的大小,指定为具有最多一个 []
(可选)的两个或以上的整数。必须至少指定 2 个维度大小,并且最多一个维度大小可以指定为 []
,这样会自动计算该维度的大小以确保 numel(B)
与 numel(A)
相匹配。当使用 []
自动计算维度大小时,您显式指定的维度必须均匀划分为输入矩阵 numel(A)
中的元素数目。
对于第二个维度以上的维度,输出 B
不反映大小为 1
的尾部维度。例如,reshape(A,3,2,1,1)
生成 3×2 矩阵。
示例: reshape(A,3,2)
示例: reshape(A,6,[],10)
示例: reshape(A,2,5,3,[])
示例: reshape(A,5,5,5,5)
输出参量
B
— 重构的数组
向量 | 矩阵 | 多维数组 | 元胞数组
重构的数组,以向量、矩阵、多维数组或元胞数组的形式返回。B
中的数据类型和元素数与 A
中的数据类型和元素数相同。B
保持其在 A
中的列顺序。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| cell
| datetime
| duration
| calendarDuration
提示
reshape
函数重新排列输入数据中的现有元素。要添加或删除元素,请使用resize
函数。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
此函数支持 tall 数组,但存在以下限制:
不支持重构 tall 维度(维度一)。第一个维度输入应始终为空,如
reshape(X,[],M,N,...)
。
有关详细信息,请参阅 使用 tall 数组处理无法放入内存的数据。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
如果输入是编译时空元胞数组,则大小参量必须为常量。
大小参量必须具有固定大小。
请参阅Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder)。
对于稀疏矩阵,
reshape
函数不支持将尾部参数作为在前两个维度后的输入。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
如果输入是编译时空元胞数组,则大小参量必须为常量。
大小参量必须具有固定大小。
对于稀疏矩阵,
reshape
函数不支持将尾部参数作为在前两个维度后的输入。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)