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 = 3×4 char array
'four'
'five'
'nine'
c = num2cell(a)
c = 3×4 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 = 1×3×2 cell array
C(:,:,1) =
{4×1 double} {4×1 double} {4×1 double}
C(:,:,2) =
{4×1 double} {4×1 double} {4×1 double}
每个 4×1 向量包含沿 A 的第一维度的元素:
C{1}ans = 4×1
1
2
3
4
创建 1×3 数值数组的 4×1×2 元胞数组。
C = num2cell(A,2)
C = 4×1×2 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
{1×1×2 double} {1×1×2 double} {1×1×2 double}
{1×1×2 double} {1×1×2 double} {1×1×2 double}
{1×1×2 double} {1×1×2 double} {1×1×2 double}
{1×1×2 double} {1×1×2 double} {1×1×2 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
{4×1×2 double} {4×1×2 double} {4×1×2 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
{1×3×2 double}
{1×3×2 double}
{1×3×2 double}
{1×3×2 double}
输入参数
输入,指定为任何类型的多维数组。
数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | categorical | datetime | duration | calendarDuration | function_handle
输出参量
生成的数组,以元胞数组的形式返回。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
扩展功能
用法说明和限制:
代码生成不支持
dim输入。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)