2

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

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

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

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

Jan12
Feb12
Mar12
Apr12
等等。

问题是当我调用fprintfor时sprintf,使用以下代码:

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

我只会得到当月的第一个字母,而不是完整的字符串。知道如何让它打印完整的字符串吗?

谢谢!

4

2 回答 2

3

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

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

应该得到你想要的。

于 2013-05-31T15:15:48.270 回答
2

只需将您的呼叫更改为

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

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

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

months = cellstr(months);
fprintf('%s', months{1});
于 2013-05-31T15:14:54.863 回答