【问题标题】:Timestamps, majorating and sum时间戳,专业和总和
【发布时间】:2013-12-15 04:55:39
【问题描述】:

我在执行程序的一部分时遇到问题,希望您能帮助我。

我在excel中有这三列;

01-01-2012 00:15    A   7,160000

01-01-2012 00:30    A   1,600000

01-01-2012 00:45    C   3,040000

01-01-2012 01:00    A   1,560000

01-01-2012 01:15    A   0,000000

01-01-2012 01:30    D   0,000000

01-01-2012 01:45    A   0,000000

直到 31-01-2012 23:45

现在我想将它们读入 MATLAB 并将它们转换为 3 个具有这种格式的新矩阵;

时间戳

01-01-2012 00:00

01-01-2012 01:00

(...)

期间

一个

一个

价格

11,800000

10

所以基本上我想要一个程序读取时间戳并保持日月年和小时(忽略分钟),在这段时间内它需要在一小时内显示最重复的值(例如:它会给出A 到 00 和 C 到 01),最后我希望它总结那个小时的价格(所以它会总结 00:15 的价格 + 00:30 的价格等)

如果你能解决我这个问题,这将是一个巨大的帮助。

P.S 在 1 小时内,我将始终拥有一个重复性最高的标记(3 个 A 和 1 个 C、3 个 D 和 1 个 A 等)我可以在这个月找到 4 个标记,A B C D。这个标记不是循环,但我会在整个月内找到它。

【问题讨论】:

    标签: excel matlab matrix timestamp


    【解决方案1】:

    在我看来,您的主要问题是从 Excel 中读取数据并以您可以使用的格式获取数据。如果是这样:

    查看xlsread。你在那里有很多可能性。例如,您可以使用以下语法:

    [num,txt,raw] = xlsread(___) 
    

    但如果您是 MATLAB 新手并且不需要最有效的方法,我建议您分别阅读每一列。 注意: 这不是最好的方法,但在我看来它是最简单的方法。您可以在每一列上使用此命令(因此调用它三次):

    num = xlsread(filename,sheet,xlRange) 
    

    查看this page 了解如何处理日期。总之,在 Excel 中将日期转换为数值。由于您有小时和分钟,这将是一个十进制数,表示自 1900 年 1 月 1 日(或 1904 年 1 月 2 日,如果在 MAC 上)以来的天数。由于 MATLAB 从 0000 年 1 月 1 日开始计算,因此您需要在阅读文件后添加大约 1900 年(查看我提供的参考资料以了解如何)。

    处理您不想要分钟的一种方法是转换为datevec,并将最后一列清零(这样您也会删除信息):

    [Y, M, D, H, MN, S] = datevec(___) ;
    % or
    date_vector = datevec(___); 
    % Where you just don't use the MN and S variables
    

    如果您希望日期看起来像日期,请将 datevec 转换为 datestring。查看formatOut,你可以选择你想要的格式。

    试试上面的。恐怕我不能为你做这项工作。

    要获得重复次数最多的值,请查看modemode(X) 返回 X 的样本模式,这是 X 中最常出现的值。您还可以通过组合以下一些来复制此功能:sortuniquediffall .您当然可以使用sum 对这些值求和。

    如果这只是你坚持的最后一部分,我建议你稍微改一下这个问题。如果两者兼而有之,并且您在完成上述操作后卡在最后一部分,我建议您将其作为一个单独的问题提出,因为这与从 Excel 中读取它无关。

    祝你好运=)

    【讨论】:

    • 感谢您的回答,我将重新表述我的问题,在新帖子中,我有三个问题。
    猜你喜欢
    • 2020-12-14
    • 2018-07-24
    • 1970-01-01
    • 2011-09-03
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多