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

How to use sprintf/fprintf to print a string inside a cell array in matlab?

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

在一个结构中 A 我有

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

我有一个 string/cell 数组

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);

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

如果你输入 help fprintf 它会说:

fprintf - Write data to text file

但是你想要help sprintf:

sprintf - Format data into string

因此您可以使用以下方式解决您的问题:

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

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

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

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

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