Matlab中字符向量元胞数组

目录

字符向量元胞数组

创建字符向量元胞数组

访问元胞数组中的字符向量

将元胞数组转换为字符串数组


字符向量元胞数组

        要将文本存储为字符向量,请将其用单引号引起来。通常,字符向量包含视为单个信息片段的文本,例如文件名或图标签。如果有多个文本片段,例如文件名列表,则可以将它们存储在元胞数组中。如果一个元胞数组的元素均为字符向量,则它是字符向量元胞数组。

注意

  • 从 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"

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值