如何从用户接受时间并将它们存储到matlab中的数组中?

时间:2014-06-28 15:20:47

标签: arrays matlab time

我想从用户接受(比方说)3个时间元素(例如8:30,8:20和8:00)并使用'datenum'将其存储在数组中。我怎样才能实现这一目标?请帮忙。

1 个答案:

答案 0 :(得分:0)

假设您只想提示给出当前日期和年份的用户,并且想要当前时间(小时和分钟 - 秒为0),可以做到以下几点:

dateNumArray = []; %// Store datenums here

%// Enter a blank line to quit this loop
while true
    timestr = input('Enter a time: ', 's');
    if (isempty(timestr))
        break;
    end
    %// Split the string up at the ':'
    %//splitStr = strsplit(timestr, ':'); %// For MATLAB R2012 and up
    splitStr = regexp(timestr, ':', 'split');

    %// Read in the current date as a vector
    %// Format of: [Year, Month, Day, Hour, Minute, Second]
    timeRead = clock;
    %// Replace hours and minutes with user prompt
    %// Zero the seconds
    timeRead(4:6) = [str2num(splitStr{1}) str2num(splitStr{2}) 0];

    %// Convert to datenum format
    dateNumArray = [dateNumArray datenum(timeRead)];
 end

以上代码的作用是我们将继续为用户输入循环,其中时间应为HH:MM格式。请注意,我没有执行错误检查,因此预计HH介于0-23之间,而MM介于0-59之间。您可以通过按 ENTER RETURN 为每个条目输入数字。它将其解析为字符串,将字符串拆分为:字符,并将:字符前后的每个部分转换为数字。然后,我们使用clock命令获取记录每小时和分钟的当前时间。这是一个6元素向量,其中记录了年,月,日,小时,分钟和秒。我们只需用我们从用户读入的内容替换小时和分钟,并将秒数归零。我们终于使用此向量并将其附加到dateNumArray变量,其中每次用户写入时,我们都会在此数组中附加datenum个数字。

当你调用它时,这是一个示例场景:

Enter a time: 8:30
Enter a time: 8:45
Enter a time: 8:00
Enter a time: 

以上是上面的示例输出:

format bank %// Show whole numbers and little precision
dateNumArray
format %// Reset format

dateNumArray =

 735778.35     735778.36     735778.33