【问题标题】:MATLAB tic-toc results in Minutes formatMATLAB tic-toc 结果为 Minutes 格式
【发布时间】:2020-11-27 23:25:00
【问题描述】:

我在我的 Matlab 项目中使用了很多地方的 tic-toc 函数。输出时间可以是331.5264 or 1234.754 seconds等。我可以输出这是分钟格式吗?例如。 5 minutes and 30.6 seconds?谢谢!

【问题讨论】:

    标签: matlab timer


    【解决方案1】:

    您所要做的就是从toc 捕获输出(而不是让它显示其默认输出),然后使用函数fprintffloorrem 自己创建一个输出:

     tStart = tic;
     % Do some things...
     tEnd = toc(tStart);
     fprintf('%d minutes and %f seconds\n', floor(tEnd/60), rem(tEnd,60));
    

    【讨论】:

    • +1 我不知道你可以控制 toc 引用的 tic。
    【解决方案2】:

    虽然 tic 和 toc 无法在几分钟内显示值,但您可以在显示之前稍微处理数据。查看以下link 到秒到小时/分钟的转换器。

    用法如下:

    tic  
    % Do something
    time_str = SECS2HMS(toc)
    disp(time_str)
    

    当我回到我的 Windows 虚拟机上时,我会试试这个。希望这会有所帮助。

    编辑
    您也可以通过以下方式使用 Matlab 中内置的 datestr 和 datenum 函数。请注意,我也没有尝试过这段代码,但链接让我想起了如何做到这一点的语法(没有调出 Matlab)

    tic
    %Do something  
    t=toc;
    disp(datestr(datenum(0,0,0,0,0,t),'HH:MM:SS'))
    

    【讨论】:

      【解决方案3】:

      我发现最简单的方法是使用:

      TIME = tic; % do calculations which take TIME to complete fprintf('This took %s', duration([0, 0, toc(TIME)]));

      toc()returns the time from the stopwatch in seconds,和duration()expects a three-column matrix expressing a time duration in [hours, minutes, seconds] format)。

      这有一个很好的特性,可以让大部分时间计算不可见。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        这个适合我:

            disp(['Elapsed time is ' num2str(round(toc/60,1)) ' minutes.'])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          • 1970-01-01
          • 2020-04-20
          • 2015-02-08
          • 2019-02-14
          相关资源
          最近更新 更多