String MATLAB-仅打印字符串的第一个字母
我在使用String MATLAB-仅打印字符串的第一个字母,string,matlab,date,printf,String,Matlab,Date,Printf,我在使用fprtinf命令(和sprintf)在MATLAB(2012a)中打印字符串时遇到问题 我有一个包含12个日期(数字)的数组。我使用以下命令将它们转换为字符串: months = datestr(data(:,1)-365,12); %Mar13 format 调用months变量时,我获得以下(和所需)输出: 1月12日 二月十二日 三月十二日 四月十二日 等等 问题是当我调用fprintf或sprintf时,使用以下代码: fprintf('%s', months(1)) 我只
fprtinf
命令(和sprintf
)在MATLAB(2012a)中打印字符串时遇到问题
我有一个包含12个日期(数字)的数组。我使用以下命令将它们转换为字符串:
months = datestr(data(:,1)-365,12); %Mar13 format
调用months
变量时,我获得以下(和所需)输出:
1月12日二月十二日 三月十二日
四月十二日 等等 问题是当我调用
fprintf
或sprintf
时,使用以下代码:
fprintf('%s', months(1))
我只会收到本月的第一封信,而不会收到完整的字符串。你知道如何让它打印完整的字符串吗
谢谢 只需将通话改为
fprintf('%s', months(1, :))
datestr
在单独的行中返回每个提供日期的字符串
或者,您可以使用cellstr
函数将结果转换为单元格数组(这也适用于非固定长度的日期格式,如'ddddd'
)
months
变量的结果数据类型是NxM字符数组。您需要将其处理为字符串的单元格数组
dates = num2cell(data(:,1)-365)
months = cellfun(@(x) datestr(x,12),dates,'UniformOutput',false)
fprintf('%s', months{1})
应该可以得到你想要的。这很有效。非常感谢您的解释,我没有意识到它是一个字符数组,以前没有处理过。谢谢同样有效,感谢您的快速回复。将相应地调整我的代码。嘿,看起来我们的解决方案执行的操作顺序相反。:)
dates = num2cell(data(:,1)-365)
months = cellfun(@(x) datestr(x,12),dates,'UniformOutput',false)
fprintf('%s', months{1})