时间戳,majorating和sum

时间:2013-12-15 04:55:40

标签: excel matlab matrix timestamp

我在做一个项目的一部分时遇到了问题,我希望你能帮助我。

我在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

t直到31-01-2012 23:45

现在我想把它们读入MATLAB并用这种格式转换成3个新矩阵;

时间戳

01-01-2012 00:00

01-01-2012 01:00

(...)

期间

A

A

价格

11,800000

10

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

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

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

1 个答案:

答案 0 :(得分: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中读取它无关。

祝你好运=)