如果在Matlab中的时间陈述

时间:2016-02-06 11:32:07

标签: matlab

您好我成功编写了我的计算机时间和日期输入的代码,就像这样

    function [Y, M, D, H, MN, S] = fcn()
    coder.extrinsic('now');
    coder.extrinsic('datevec');
    Y = 0;
    M = 0;
    D = 0;
    H = 0;
    MN = 0;
    S = 0;
   [Y, M, D, H, MN, S] = datevec(now);
   end

它完美无缺。然后我尝试为控制器创建另一个块,在7 AM到5PM之间输出为1,如果不在这个时间内输出0,我的代码就像这样

   function y = fcn(u)

   u = datestr(7:00AM:5:00PM)
  if u = datestr(7:00AM:5:00PM)
  y=1;
  else
   y=0;

  end

但发生了错误。请帮我弄清楚出了什么问题。谢谢

1 个答案:

答案 0 :(得分:0)

首先,您所做的第一个功能已经在MATLAB中构建为clock

关于你的问题,有很多方法可以解决这个问题,但我认为最简单的方法是从一天开始算起的秒数。

使用clock命令,您将获得格式为[year month day hour minute second]的当前时间向量。因此,从一天开始经过的时间是3600*time(4) + 60*time(5) + time(6),即3600次小时加60次分钟加上秒。从00:00:00到7:00:00 7 * 3600秒过去了。同样从00:00:00到17:00:00 17 * 3600秒过去了。因此,您可以比较这些值,以确定它是否在上午7点到下午5点之间:

function y = IsBetween5AMand7PM
    time = clock;
    current = 3600*time(4) + 60*time(5) + time(6); %seconds passed from the beginning of day until now
    morning = 3600*7; %seconds passed from the beginning of day until 7AM
    evening = 3600*17; %seconds passed from the beginning of day until 5PM
    y = current > morning && current < evening;

希望有所帮助。