如何使用sprintf / fprintf在matlab中打印单元格数组中的字符串?

时间:2015-02-22 21:16:29

标签: arrays string matlab printf cell-array

我想知道是否可以使用sprintf或fprintf将某些内容打印到单元格数组中。

在结构A中我有

A.labels = {'A' 'B' 'C' 'D'}

我有一个字符串/单元格数组

B = {'E' 'F' 'G' 'H'}

我希望打印到一个新的结构C,这样我想要

C.labels = {'A-E', 'B-F', 'C-G', 'E-H'}

在下面的代码中,我只是想检查如何进行第一次输入,然后一旦我弄明白,我可以自己做其余的事情。

C(1).labels = fprintf('%s -%s',B{1},A(1).labels);

但这不起作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您输入help fprintf,则会显示:

  

fprintf - 将数据写入文本文件

但你想要help sprintf

  

sprintf - 将数据格式化为字符串

因此,您可以使用以下方法解决问题:

C.labels = cellfun(@(x,y) sprintf('%s-%s',x,y), A.labels, B, 'uni',0)

这使用:cellfun来获取相应的A.labelsB对,并将其提供给使用@(x,y) sprintf('%s-%s',x,y)的函数sprintf

当然,您也可以使用常规for循环。我想补充一点,你现在拥有的是一个单cell的结构 - 长度为4的条目,而不是四个结构,每个结构都有一个条目。

答案 1 :(得分:2)

这可以通过strcat非常简单地完成:

C.labels = strcat(A.labels, '-', B);