如何使用 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.labels
和 B
对并将其提供给使用 sprintf
的函数 @(x,y) sprintf('%s-%s',x,y)
。
当然,您也可以使用常规 for
循环。我还想补充一点,您目前拥有的是一个具有单个 cell
长度为四的条目的结构,而不是四个结构,每个结构都有一个条目。
这可以用 strcat
非常简单地完成:
C.labels = strcat(A.labels, '-', B);
我想知道是否可以使用 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.labels
和 B
对并将其提供给使用 sprintf
的函数 @(x,y) sprintf('%s-%s',x,y)
。
当然,您也可以使用常规 for
循环。我还想补充一点,您目前拥有的是一个具有单个 cell
长度为四的条目的结构,而不是四个结构,每个结构都有一个条目。
这可以用 strcat
非常简单地完成:
C.labels = strcat(A.labels, '-', B);