MATLAB - 只打印首字母串

时间:2013-05-31 15:11:16

标签: string matlab date printf

我在使用fprtinf命令(和sprintf)在MATLAB(2012a)中打印字符串时遇到问题。

我有一个包含12个日期(数字)的数组。我使用以下命令将它们转换为字符串:

months = datestr(data(:,1)-365,12); %Mar13 format

当我调用months变量时,我获得了以下(和期望的)输出:

Jan12
Feb12
Mar12
Apr12
等。

问题在于,当我拨打fprintfsprintf时,请使用以下代码:

fprintf('%s', months(1))

我只会收到本月的第一个字母而不是完整的字符串。知道怎么让它打印完整的字符串吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

months变量的结果数据类型是NxM字符数组。您需要将其作为字符串的单元格数组进行处理。

dates = num2cell(data(:,1)-365)
months = cellfun(@(x) datestr(x,12),dates,'UniformOutput',false)
fprintf('%s', months{1})

应该得到你想要的东西。

答案 1 :(得分:2)

只需将您的电话改为

即可
fprintf('%s', months(1, :))

datestr在单独的行上返回每个提供日期的字符串。

或者,您可以使用cellstr函数将结果转换为单元格数组(这也适用于非固定长度的日期格式,如'dddd'

months = cellstr(months);
fprintf('%s', months{1});