MATLAB 帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
将数组转换为相同大小的元胞数组
C = num2cell(A)
C = num2cell(A,dim)
C = num2cell(A) 通过将 A 的每个元素放置于 C 的一个单独元胞中,来将数组 A 转换为元胞数组 C。
C
A
num2cell 函数转换具有任意数据类型(甚至是非数值类型)的数组。
num2cell
示例
C = num2cell(A,dim) 将 A 的内容划分成 C 中单独的元胞,其中 dim 指定每个元胞包含 A 的哪个维度。dim 可以是维度的标量或向量。例如,如果 A 有 2 行 3 列,那么:
dim
num2cell(A,1) 创建一个 1×3 元胞数组 C,其中每个元胞包含 A 的 2×1 列。
num2cell(A,1)
num2cell(A,2) 创建一个 2×1 元胞数组 C,其中每个元胞包含 A 的 1×3 行。
num2cell(A,2)
num2cell(A,[1 2]) 创建一个 1×1 元胞数组 C,其中每个元胞包含 A 整个数组。
num2cell(A,[1 2])
全部折叠
将一个数值数组的所有元素放入单独的元胞。
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 = 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 的第二维度的元素:
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 的第三维度的元素:
ans = ans(:,:,1) = 1 ans(:,:,2) = 10
通过合并各个维度的数值数组创建一个元胞数组。
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
double
single
int8
int16
int32
int64
uint8
uint16
uint32
uint64
logical
char
string
struct
cell
categorical
datetime
duration
calendarDuration
function_handle
A 的维度,指定为正整数或正整数向量。dim 必须介于 1 和 ndims(A) 之间。
ndims
各元素不需要按照数值顺序排列。但是 num2cell 会置换 C 中每个元胞的数组维度以便与指定维度的顺序相匹配。
数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
生成的数组,以元胞数组的形式返回。C 的大小取决于 A 的大小和 dim 的值。
如果未指定 dim,则 C 的大小与 A 相同。
如果 dim 是标量,则 C 包含 numel(A)/size(A,dim) 元胞。如果 dim 是 1 或 2,则每个元胞分别包含一个列向量或行向量。如果 dim > 2,则每个元胞包含一个第 dim 维的长度为 size(A,dim) 的数组,并且其他维度都是单一维度。
numel(A)/size(A,dim)
size(A,dim)
例如,给定一个 4×7×3 数组 A,此图窗将显示 num2cell 如何创建与 dim 值 1、2 和 3 相对应的元胞。
1
2
3
如果 dim 是包含 N 个值的向量,则 C 具有 numel(A)/prod([size(A,dim(1)),...,size(A,dim(N))]) 个元胞。每个元胞都包含一个第 dim(i) 维的长度为 size(A,dim(i)) 并且其他维度为单一维度的数组。
N
numel(A)/prod([size(A,dim(1)),...,size(A,dim(N))])
(i)
size(A,dim(i))
例如,给定一个 4×7×3 数组,您可以将 dim 指定为一个正整数向量以创建不同维度的元胞数组。
数据类型: cell
要将元胞数组 C 转换回数组,请使用 cell2mat 函数,或使用语法 cat(dim,C{:}),其中 dim 指定维度。
cell2mat
cat(dim,C{:})
全部展开
用法说明和限制:
代码生成不支持 dim 输入。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
在 R2006a 之前推出
cat | mat2cell | cell2mat
cat
mat2cell
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处