在MATLAB中将单元格数组转换为字符串

时间:2013-12-09 05:40:49

标签: string matlab cell-array

我在Strings中做了一些操作。我在X中有一个字符串'AGCT'。我使用以下命令将其保存在一个单元格中

y(1,1)={x};

现在它存储在一个单元格中。现在我想分别从字符串中取出每个字母。我想首先取A到G,依此类推。在这种情况下,单元格数组转换是必要的。那么如何将单元格内容再次转换回字符串??

1 个答案:

答案 0 :(得分:5)

您可以使用大括号({}):

从单元格中获取字符串
x='AGCT';
y(1) = {x};
y{1}
ans =    

AGCT

您可以将索引操作符串起来,直接从单元格数组中获取单个字符。例如:

y{1}(2)
ans =

G

另请注意,char函数可以通过在填充字符串时将字符串的单元格数组转换为2D字符数组,同时根据需要填充空格:

  

S = char(C),当C是字符串的单元格数组时,将C的每个元素放入字符数组S的行中。使用CELLSTR转换回来。

通过这种方式,您可以将整个单元格数组转换为仅char(y)的2D字符数组,但我认为您正在寻找一种直接从单元格数组中对单个字符进行索引的方法。 / p>

说到单元阵列转换,请查看cellfun,它可用于对每个单元执行相同的操作。例如,如果你有一个像y = {'AGCT','CTGA'};这样的单元格而你想要每个单元格的第二个字符(包含GT的字符数组),你可能会想要y{:}(2),但是这个不起作用(第一个索引必须是标量)。解决方案是:

>> iBase = 2;
>> basei = cellfun(@(c)c(iBase),y)
basei =
GT