num2cell
将数组转换为相同大小的元胞数组
说明
示例
将数组转换为元胞数组
将一个数值数组的所有元素放入单独的元胞。
a = magic(3)
a = 3×3
8 1 6
3 5 7
4 9 2
c = num2cell(a)
c=3×3 cell array
{[8]} {[1]} {[6]}
{[3]} {[5]} {[7]}
{[4]} {[9]} {[2]}
将一个单词的各个字母放入数组的各个元胞中。
a = ['four';'five';'nine']
a = 3x4 char array
'four'
'five'
'nine'
c = num2cell(a)
c = 3x4 cell
{'f'} {'o'} {'u'} {'r'}
{'f'} {'i'} {'v'} {'e'}
{'n'} {'i'} {'n'} {'e'}
创建数值数组的元胞数组
生成一个 4×3×2 的数值数组,然后创建一个包含 4×1 列向量的 1×3×2 的元胞数组。
A = reshape(1:12,4,3); A(:,:,2) = A*10
A = A(:,:,1) = 1 5 9 2 6 10 3 7 11 4 8 12 A(:,:,2) = 10 50 90 20 60 100 30 70 110 40 80 120
C = num2cell(A,1)
C = 1x3x2 cell array
C(:,:,1) =
{4x1 double} {4x1 double} {4x1 double}
C(:,:,2) =
{4x1 double} {4x1 double} {4x1 double}
每个 4×1 向量包含沿 A
的第一维度的元素:
C{1}
ans = 4×1
1
2
3
4
创建 1×3 数值数组的 4×1×2 元胞数组。
C = num2cell(A,2)
C = 4x1x2 cell array
C(:,:,1) =
{[ 1 5 9]}
{[2 6 10]}
{[3 7 11]}
{[4 8 12]}
C(:,:,2) =
{[ 10 50 90]}
{[20 60 100]}
{[30 70 110]}
{[40 80 120]}
每个 1×3 行向量包含沿 A
的第二维度的元素:
C{1}
ans = 1×3
1 5 9
最后,创建 1×1×2 数值数组的 4×3 元胞数组。
C = num2cell(A,3)
C=4×3 cell array
{1x1x2 double} {1x1x2 double} {1x1x2 double}
{1x1x2 double} {1x1x2 double} {1x1x2 double}
{1x1x2 double} {1x1x2 double} {1x1x2 double}
{1x1x2 double} {1x1x2 double} {1x1x2 double}
每个 1×1×2 向量包含沿 A
的第三维度的元素:
C{1}
ans = ans(:,:,1) = 1 ans(:,:,2) = 10
合并多个维度
通过合并各个维度的数值数组创建一个元胞数组。
A = reshape(1:12,4,3); A(:,:,2) = A*10
A = A(:,:,1) = 1 5 9 2 6 10 3 7 11 4 8 12 A(:,:,2) = 10 50 90 20 60 100 30 70 110 40 80 120
c = num2cell(A,[1 3])
c=1×3 cell array
{4x1x2 double} {4x1x2 double} {4x1x2 double}
每个 4×1×2 数组包含沿 A
的第一维度和第三维度的元素:
c{1}
ans = ans(:,:,1) = 1 2 3 4 ans(:,:,2) = 10 20 30 40
c = num2cell(A,[2 3])
c=4×1 cell array
{1x3x2 double}
{1x3x2 double}
{1x3x2 double}
{1x3x2 double}
输入参数
A
— 输入
任何类型的多维数组
输入,指定为任何类型的多维数组。
数据类型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| struct
| cell
| categorical
| datetime
| duration
| calendarDuration
| function_handle
输出参量
C
— 生成的数组
元胞数组
生成的数组,以元胞数组的形式返回。C
的大小取决于 A
的大小和 dim
的值。
如果未指定
dim
,则C
的大小与A
相同。如果
dim
是标量,则C
包含numel(A)/size(A,dim)
元胞。如果dim
是 1 或 2,则每个元胞分别包含一个列向量或行向量。如果dim
> 2,则每个元胞包含一个第dim
维的长度为size(A,dim)
的数组,并且其他维度都是单一维度。例如,给定一个 4×7×3 数组
A
,此图窗将显示num2cell
如何创建与dim
值1
、2
和3
相对应的元胞。如果
dim
是包含N
个值的向量,则C
具有numel(A)/prod([size(A,dim(1)),...,size(A,dim(N))])
个元胞。每个元胞都包含一个第dim
(i)
维的长度为size(A,dim(i))
并且其他维度为单一维度的数组。例如,给定一个 4×7×3 数组,您可以将
dim
指定为一个正整数向量以创建不同维度的元胞数组。
数据类型: cell
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持
dim
输入。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (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)