matlab时间是不是毫秒,matlab – 将毫秒转换为小时和绘图

在这种情况下,最好使用

datenum值,然后使用

datetick将绘图的刻度标签格式设置为“HH:MM”.

假设您开始在t_1 = [HH_1,MM_1]进行测量并停止在t_2 = [HH_2,MM_2]进行测量.

生成datenum值数组的一个很酷的技巧是使用以下表达式:

time_datenums = HH_1/24 + MM_1/1440 : 1/1440 : HH_2/24 + MM_2/1440;

说明:

我们使用colon (:) operator创建一个规则间隔的向量time_datenums = A:B:C,其中A是起始datenum值,B是datenum值之间的增量,C是结束datenum值.

由于您的测量是每分钟(60000毫秒)进行的,因此datenum值之间的增量也应为1分钟.由于一天有24小时,每天1440分钟,因此使用B = 1/1440作为向量元素之间的增量,以获得1分钟的增量.

对于A和C,我们只需要将小时数除以24,将小数位除以1440,然后将它们相加如下:

> A = HH_1 / 24 MM_1 / 1440

> C = HH_2 / 24 MM_2 / 1440

因此,例如,如果t_1 = [08,00],则A = 08/24 00/1440.就如此容易.

请注意,此过程根本不使用datenum function,但它仍然设法生成一个有效的datenum值数组,只考虑datenum的时间,而不需要打扰datenum的日期.您可以了解有关此here和here的更多信息.

回到原来的问题,让我们来看看代码:

time_millisec = 0:60000:9e6; % Time array in milliseconds.

power = 10*rand(size(time_millisec)); % Random power data.

% Elapsed time in milliseconds.

elapsed_millisec = time_millisec(end) - time_millisec(1);

% Integer part of elapsed hours.

elapsed_hours_int = fix(elapsed_millisec/(1000*60*60));

% Fractional part of elapsed hours.

elapsed_hours_frac = (elapsed_millisec/(1000*60*60)) - elapsed_hours_int;

t_1 = [08, 00]; % Start time 08:00

t_2 = [t_1(1) + elapsed_hours_int, t_1(2) + elapsed_hours_frac*60]; % Compute End time.

HH_1 = t_1(1); % Hour digits of t_1

MM_1 = t_1(2); % Minute digits of t_1

HH_2 = t_2(1); % Hour digits of t_2

MM_2 = t_2(2); % Minute digits of t_2

time_datenums = HH_1/24+MM_1/1440:1/1440:HH_2/24+MM_2/1440; % Array of datenums.

plot(time_datenums, power); % Plot data.

datetick('x', 'HH:MM'); % Set 'HH:MM' datetick format for the x axis.

这是输出:

4f15a39bc3195dfa92bd87d327621d0a.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值