Main Content

convertContainedStringsToChars

在元胞数组或结构体的任何级别转换字符串数组

说明

要使代码接受包含字符串作为输入参量的元胞数组和结构体,请将对 convertContainedStringsToChars 的调用添加到代码的开头。这样,您无需再对您编写的代码进行任何其他更改,即可使用包含字符数组的元胞数组或结构体。

示例

B = convertContainedStringsToChars(A)A 中的任意级别转换字符串数组。

  • 如果 A 是字符串数组,则 B 是字符向量或字符向量元胞数组。

  • 如果 A 是元胞数组或结构体,则 A 的任何元胞或字段中的字符串数组将成为 B 中的字符向量或字符向量元胞数组。A 的所有其他元胞或字段在 B 中不变。

  • 否则,该函数将原样返回 A

示例

[B1,...,Bn] = convertContainedStringsToChars(A1,...,An) 转换输入参量 A1,...,An。对于每个输入参量,B1,...,Bn 中必须有对应的输出参量。

示例

全部折叠

创建一个包含发射日期、宇宙飞船名称和所访问行星的元胞数组。有些元胞包含字符串数组,其他则不包含。

C = {2004,"Messenger","Mercury"; ...
     1977,"Voyager 1",["Jupiter","Saturn"]; ...
     2006,"New Horizons","Pluto"}
C=3×3 cell array
    {[2004]}    {["Messenger"   ]}    {["Mercury"            ]}
    {[1977]}    {["Voyager 1"   ]}    {["Jupiter"    "Saturn"]}
    {[2006]}    {["New Horizons"]}    {["Pluto"              ]}

C 中的字符串转换为字符向量。

C = convertContainedStringsToChars(C)
C=3×3 cell array
    {[2004]}    {'Messenger'   }    {'Mercury'}
    {[1977]}    {'Voyager 1'   }    {1x2 cell }
    {[2006]}    {'New Horizons'}    {'Pluto'  }

请注意,该函数将字符串数组 ["Jupiter","Saturn"] 转换为包含在元胞 C(2,3) 中的字符向量元胞数组。要访问元胞的内容,请使用花括号索引。

C{2,3}
ans = 1x2 cell
    {'Jupiter'}    {'Saturn'}

为绘图创建一个包含数据数组、标题和标签的结构体。某些字段包含字符串,其他则不包含。

S.x = linspace(0,2*pi);
S.y = sin(S.x);
S.title = "y = sin(x)";
S.axislabels = ["x (radians)","y"]
S = struct with fields:
             x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 ... ] (1x100 double)
             y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 ... ] (1x100 double)
         title: "y = sin(x)"
    axislabels: ["x (radians)"    "y"]

转换 S 中的字符串。

S = convertContainedStringsToChars(S)
S = struct with fields:
             x: [0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077 0.5712 0.6347 0.6981 0.7616 0.8251 0.8885 0.9520 1.0155 1.0789 1.1424 1.2059 1.2693 1.3328 1.3963 1.4597 1.5232 1.5867 1.6501 1.7136 1.7771 1.8405 1.9040 ... ] (1x100 double)
             y: [0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862 0.5406 0.5929 0.6428 0.6901 0.7346 0.7761 0.8146 0.8497 0.8815 0.9096 0.9341 0.9549 0.9718 0.9848 0.9938 0.9989 0.9999 0.9969 0.9898 0.9788 0.9638 0.9450 ... ] (1x100 double)
         title: 'y = sin(x)'
    axislabels: {'x (radians)'  'y'}

处理任意多个不同类型的输入数组。

创建一个双精度数组、一个结构体和一个元胞数组。结构体和元胞数组包含使用双引号指定的字符串。

x = linspace(0,2*pi,8);
S.y = sin(x);
S.title = "y = sin(x)";
C = {{sin(x),"y = sin(x)"},{cos(x),"y = cos(x)"}};

转换字符串并返回所有其他未更改的数据。

[x,S,C] = convertContainedStringsToChars(x,S,C)
x = 1×8

         0    0.8976    1.7952    2.6928    3.5904    4.4880    5.3856    6.2832

S = struct with fields:
        y: [0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -2.4493e-16]
    title: 'y = sin(x)'

C=1×2 cell array
    {1x2 cell}    {1x2 cell}

显示第一个元胞 C(1) 中包含的元胞数组的内容。该函数将嵌套元胞或嵌套结构体中的字符串转换为字符向量。请注意,字符向量显示为带有单引号。

C{1}
ans=1×2 cell array
    {[0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -2.4493e-16]}    {'y = sin(x)'}

输入参数

全部折叠

输入数组,指定为任意大小或数据类型的数组。

如果 A 是元胞数组或结构体,则可以嵌套。元胞可以包含另一个元胞数组,结构体可以包含另一个结构体的字段。convertContainedStringsToChars 将字符串形式的每个元素或字段值转换为对应的字符向量或字符向量元胞数组。该函数使用 convertStringsToChars 函数定义的规则转换每个元素或字段值,从而遍历嵌套容器的每个层级和组合。

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2018b 中推出