2016-03-03 83 views
0

如果时间是早上7点到下午5点之间,我能够成功地制定一个时间表,其中输出为1,时间基于我的电脑。然而,周一至周日的日子也基于我的电脑。我无法找到解决方案在周一至周六输出1,并在周日输出0。我的代码如下平日和周末的Matlab代码

function y = IsBetween5AMand7PM 
coder.extrinsic('clock'); 
time = zeros(1,6); 
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; 

end 

现在,这里的时间是正确的已经是我需要的是在工作日(周一至周日)有我需要的输出。此外,此matlab代码位于Simulink块的matlab函数中。

+0

什么版本的MATLAB – excaza

+0

@excaza R2015a。 – uhlexxxmartini

+1

请参阅['weekday'](http://www.mathworks.com/help/matlab/ref/weekday.html) – excaza

回答

1

如果你使用平日这样,你可以为你今天的日期指定生成0/1值:

if (weekday(now) > 1) 
    day_of_week_flag = 1; 
else 
    day_of_week_flag = 0; 

,或者如果你喜欢,这一个班轮做同样的事情,但可能不会那么容易,如果你不熟悉的语法如下:

day_of_week_flag = (weekday(now) > 1); 

您也可以使用日期字符串这样的转换其他日期:

day_of_week_flag = (weekday('01-Mar-2016') > 1) 

最后,如果您有日期/时间值的数值数组,像[2016 3 3 12 0 0],你首先需要使用datenum转换为串行日期,然后用平日:

time = clock; 
day_of_week_flag = (weekday(datenum(time)) > 1); 

一种替代的方法来检查,而无需使用平日是以下内容:

time = clock; 
day_of_week = datestr(time, 8); 
if (day_of_week == 'Sun') 
    day_of_week_flag = 0; 
else 
    day_of_week_flag = 1; 
+0

非常感谢你 – uhlexxxmartini

+0

我得到这个错误“功能'星期一'不支持独立的代码生成。 coder.extrinsic的文档以了解如何在模拟中使用此功能。“ – uhlexxxmartini

+0

我使用了第一个 – uhlexxxmartini