您好我成功编写了我的计算机时间和日期输入的代码,就像这样
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
但发生了错误。请帮我弄清楚出了什么问题。谢谢
答案 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;
希望有所帮助。