我想知道是否可以使用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);
但这不起作用。我该如何解决这个问题?
答案 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.labels
和B
对,并将其提供给使用@(x,y) sprintf('%s-%s',x,y)
的函数sprintf
。
当然,您也可以使用常规for
循环。我想补充一点,你现在拥有的是一个单cell
的结构 - 长度为4的条目,而不是四个结构,每个结构都有一个条目。
答案 1 :(得分:2)
这可以通过strcat
非常简单地完成:
C.labels = strcat(A.labels, '-', B);