目录
字符向量元胞数组
要将文本存储为字符向量,请将其用单引号引起来。通常,字符向量包含视为单个信息片段的文本,例如文件名或图标签。如果有多个文本片段,例如文件名列表,则可以将它们存储在元胞数组中。如果一个元胞数组的元素均为字符向量,则它是字符向量元胞数组。
注意
从 R2018b 开始,推荐的文本存储方式是使用字符串数组。如果创建具有
string
数据类型的变量,请将它们存储在字符串数组而不是元胞数组中。有关详细信息,参考字符串数组和字符数组中的文本和更新代码以接受字符串。虽然我们过去常用字符串元胞数组来描述此类元胞数组,但这种描述不再准确,因为此类元胞数组包含的是字符向量而不是字符串。
创建字符向量元胞数组
要创建字符向量元胞数组,请使用花括号 {}
,就像创建任何元胞数组一样。例如,使用字符向量元胞数组来存储名称列表。
C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell array
{'Li'} {'Sanchez'} {'Jones'} {'Yang'} {'Larson'}
C
中的字符向量可以有不同长度,因为元胞数组不要求其内容具有相同的大小。要确定 C
中字符向量的长度,请使用 strlength
函数。
L = strlength(C)
L = 1×5
2 7 5 4 6
访问元胞数组中的字符向量
要访问元胞数组中的字符向量,请使用花括号 {}
对其进行索引。提取第一个元胞的内容,并将其存储为字符向量。
C = {'Li','Sanchez','Jones','Yang','Larson'};
chr = C{1}
chr =
'Li'
使用另一个字符向量为第一个元胞赋值。
C{1} = 'Yang'
C = 1x5 cell array
{'Yang'} {'Sanchez'} {'Jones'} {'Yang'} {'Larson'}
要引用元胞的子集而不是其内容,请使用圆括号进行索引。
C(1:3)
ans = 1x3 cell array
{'Yang'} {'Sanchez'} {'Jones'}
虽然可以通过索引来访问元胞的内容,但是,大多数接受元胞数组作为输入的函数对整个元胞数组进行操作。例如,可以使用 strcmp
函数将 C
的内容与字符向量进行比较。如果匹配,strcmp
返回 1
,否则返回 0
。
TF = strcmp(C,'Yang')
TF = 1x5 logical array
1 0 0 1 0
可以对 TF
求和,以求出匹配数。
num = sum(TF)
num = 2
使用 TF
作为逻辑索引以返回 C
中的匹配项。如果使用圆括号进行索引,则输出是只包含匹配项的元胞数组。
M = C(TF)
M = 1x2 cell array
{'Yang'} {'Yang'}
将元胞数组转换为字符串数组
从 R2018b 开始,MATLAB® 和 MathWorks® 全线产品都支持字符串数组。因此,建议使用字符串数组而不是字符向量元胞数组。(不过,接受字符串数组作为输入的 MATLAB 函数也接受字符向量和字符向量元胞数组)。可以将字符向量元胞数组转换为字符串数组。要转换字符向量元胞数组,请使用 string
函数。
C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell array
{'Li'} {'Sanchez'} {'Jones'} {'Yang'} {'Larson'}
str = string(C)
str = 1x5 string array
"Li" "Sanchez" "Jones" "Yang" "Larson"
事实上,string
函数可以转换任何元胞数组,只要数组中的内容都能被转换为字符串即可。
C2 = {5, 10, 'some text', datetime('today')}
C2=1×4 cell
{[5]} {[10]} {'some text'} {[30-Jul-2019]}
str2 = string(C2)
str2 = 1x4 string array
"5" "10" "some text" "30-Jul-2019"