在MATLAB中将一个单元数组转换成字符串

3
我正在处理字符串操作。在变量X中,我有一个字符串 'AGCT'。我使用以下命令将其保存在单元格中:
y(1,1)={x};

现在它被存储在单个单元格中。现在我想分别取出字符串中的每个字母。我想先取A,再取G,以此类推。在这种情况下,需要进行单元格数组转换。那么如何将单元格内容重新转换为字符串?


1
我会称其为“访问存储在单元格中的内容”,而不是“将单元格转换为其他内容”。相关问题:使用{}和()(花括号与括号)访问单元格元素之间的区别 - Eitan T
1个回答

5
你可以使用花括号 ({}) 从单元格中获取字符串:
x='AGCT';
y(1) = {x};
y{1}
ans =    

AGCT

您可以使用索引运算符直接从单元数组中获取个别字符。例如:

y{1}(2)
ans =

G

还要记住,char函数可以将字符串的单元格数组转换为二维字符数组,通过垂直连接字符串并在必要时填充空格:

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

这样,您可以使用char(y)将整个单元格数组转换为二维字符数组,但我认为您正在寻找一种直接从单元格数组进行个别字符索引的方法。
说到单元格数组转换,看看cellfun,它可以用于对每个单元格执行相同的操作。例如,如果您有一个单元格,如y = {'AGCT','CTGA'};,并且您想要每个单元格的第二个字符(包含GT的字符数组),您可能会尝试执行y {:} (2),但这不起作用(第一个索引必须是标量)。解决办法是:
>> iBase = 2;
>> basei = cellfun(@(c)c(iBase),y)
basei =
GT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接