【问题标题】:MATLAB Table Datetime loop indexingMATLAB 表日期时间循环索引
【发布时间】:2020-12-07 04:39:47
【问题描述】:

我正在尝试使用我的 excel 电子表格并将其导入 MATLAB(已经完成),然后使用for-loop 索引来创建包含特定日期的数据数组。

因此,理想情况下,我想知道如何遍历多年的数据,并创建日期与当天表格元素相对应的变量。正如我所说,我拥有多年的数据,这就是为什么我想要一个能够“自动化”我的流程的解决方案。

【问题讨论】:

  • 说实话,你还不清楚你想要什么。我的意思是,您已经可以遍历日期。您想动态命名变量吗? That is not a good idea。您可以创建一个包含所有数据的 structure 内部结构:struct('date',struct('<name of data>',data,'<name of data2>',data2
  • 最终,我希望能够处理每一天的数据,并获得当天可能有 10 场比赛的一整天的总积分。我的想法是,如果我可以有一堆数组,我可以遍历并找到总数将是最简单的。如果我的解释难以理解,我们深表歉意。
  • 所以您希望能够获得某一天的平均结果,对吗?
  • 是的,我对结构进行了更多研究,我认为理想情况下我想创建一个赛季结构,日期结构包含当天发生的所有比赛和每场比赛的信息
  • 那么我将如何将我的季节结构中的日期分组到一个以该日期命名的结构中,并在日期结构中包含所有数据,如球队、分数、赔率等?

标签: matlab indexing matlab-table


【解决方案1】:

欢迎来到stackoverflow!请注意,如果您提供一些代码会更容易——至少可以创建一些示例数据。

无论如何,您可以轻松地循环日期,如果您将其扩展到多个条目,效率应该不会有问题:

Tm = [  datetime('now') + duration(1,0,0)%add 1 hour
        datetime('now')
        datetime('yesterday')
        datetime('tomorrow')];

    
% convert to date
Dt = yyyymmdd(Tm);
% you may want to sort it
% [val,idx] = sort(Dt);

% get unique dates
Dt_uq = unique(Dt);

% create a cell of storage
DataAtDate = cell(length(Dt_uq),1);

% loop over unique dates
for i = 1:length(Dt_uq)
    Dt1 = Dt_uq(i);
    % get all of the same type
    lg = Dt == Dt1;
    % index matrix/cell to do something
    disp(Dt(lg,:))
    % do something with the data or matrix or table... e.g. store it in a cell
    DataAtDate{i} = Dt(lg,:);
end

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 2016-06-01
    • 2018-10-22
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多