Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印Matlab';持续时间_Matlab_Time - Fatal编程技术网

如何打印Matlab';持续时间

如何打印Matlab';持续时间,matlab,time,Matlab,Time,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 现在我想使用fprintf输出一些计算的结果,

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  
现在我想使用
fprintf
输出一些计算的结果,它是
duration
类型。但是,
duration
既不是数字也不是字符串,也没有创建字符串的方法。我如何才能使
fprintf
接受它

我使用Matlab2014b。

您可以使用

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

   d_char      1x8                16  char    

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

以你为例,

>> 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

我认为这更符合OP之后的情况,这正是我想要的。谢谢。是的,这就是我到目前为止所做的。但是它真的很麻烦:)Eval是邪恶的:)谢谢你的破解。显然,char解决方案更好:)