如何打印 Matlab 的 DURATION

How to print Matlab's DURATION

Matlab 最近引入了一种新类型——持续时间。所以我可以做类似的事情:

>> d = datetime('12:10:00') - datetime('12:05:00')
d = 
   00:05:00
>> whos d
  Name      Size            Bytes  Class       Attributes
  d         1x1               128  duration  

现在我想输出一个duration类型的计算结果,使用fprintf。但是 duration 既不是数字也不是字符串,也没有创建字符串的方法。我该怎么做才能让 fprintf 接受它?

我正在使用 Matlab 2014b。

您可以使用

>> d_char = char(d);
>> whos d_char
   Name        Size            Bytes  Class    Attributes

   d_char      1x8                16  char    

有一些函数可以将 duration 类型转换为表示秒或分钟等的 double 数字。参见示例 here

使用你的例子,

>> d = datetime('12:10:00') - datetime('12:05:00')
d = 
   00:05:00
>> seconds(d)
ans =
   300
>> minutes(d)
ans =
     5
>> hours(d)
ans =
    0.0833

看起来 disp 被持续时间变量重写了,也许你可以利用它:

ld = duration(1,2,3);
>> ld
ld = 
   01:02:03
>> fprintf('%s', ld)
Error using fprintf
Function is not defined for 'duration' inputs. . 
>> disp(ld)
   01:02:03
>> c = evalc('disp(ld)')
c =
   01:02:03
>> fprintf('%s', evalc('disp(ld)'))
   01:02:03