Re: [讨论] 计算总时间时...资料范围有重叠怎么写?

楼主: qeagle   2014-05-06 21:41:31
MATLAB有提供datenum指令可以把日期换成一个数字,每一天差1
假设半年是183天好了
先把所有日期用datenum换成数字
再用一个loop从第一个开始,将所得到的数字加183,看有没有大于接下来的数字
没大于就算在同半年内,
若大于,则是另一个范围的起始点,应该不难
我没全部看完你的问题,仅提供一点方向供参考
※ 引述《h10840206 (仕幸)》之铭言:
: 急求解...希望大大能够耐心看或给我个方向...
: 标题有点朦胧...
: 我的意思是:
: 如果现在有10笔时间点的资料
: 1989 10 20
: 1989 12 10
: 1990 11 18
: 1991 12 21
: 1992 02 17
: 1994 01 05
: 1998 06 06
: 1999 05 17
: 1999 11 20
: 2000 01 17
: 【以下是我的想法,逻辑概念很差@@ 如果想法太烂请大大看最下面的“目的”就可以了】
: 我想要找出每个时间点增减半年都没有和其他资料重叠的时间点资料,
: 若是有重叠,相关的也有重叠,那就全部算一组
: (我只想要一组之中,“头”和“尾”的资料即可)。
: 也就是说第一个资料增减半年的范围之中,和第二笔增减半年范围有重叠到,
: 第二笔又跟第三笔有重叠,但第三组和第四组就没有重叠了。
: (增减一年看有没有包括其他笔资料,就可以知道有没有重叠到。)
: 那一二三笔算一组,然后我只要取一和三(头和尾)的资料就好。
: 分组完的结果会是这样↓
: 第[(1 2 3) (4 5) 6 (7 8 9 10)]资料
: 然后每组取头尾
: 第[1 3 4 5 6 7 10]资料
: 依此类推最后我想要找到的资料(矩阵)是:
: 1989 10 20
: 1990 11 18
: 1991 12 21
: 1992 02 17
: 1994 01 05
: 1998 06 06
: 2000 01 17
: 请问这种要怎么写呀?我用 || & 逻辑符号来求是否在范围内(不知道有没有更好的方法)
: 但我只会用max, min, find互相搭配
: 也只能找到被分组后的最大和最小而已...
: (像刚刚那笔我只能找到[1 6 10])
: 一直碰到瓶颈...
: 写了两个礼拜了写不出来...
: 【目的】现在有37万笔这个时间资料的矩阵(370000x4)。
: 出现在上面那10笔
: 1989 10 20
: 1989 12 10
: 1990 11 18
: 1991 12 21
: 1992 02 17
: 1994 01 05
: 1998 06 06
: 1999 05 17
: 1999 11 20
: 2000 01 17
: 时间点前后增加减半年的资料个数N和时间T(天数)。
: 如果不好理解,请看这张图
: http://ppt.cc/uPYD
: 我的那个想法是用那七笔资料位置找出第几个资料,
: 譬如说第一笔1989 4 20(1989 10 20半年前)的资料在271054
: 最后一笔1991 5 17(1990 11 18半年后)的资料在310101
: 这样这两个时间点之间的资料数就有310101-271054个。
: 然后再把每个区间的个数n、时间t相加起来得到总数个N和总时间T。
: 但这个算法天数不好求得...没办法一起算@@
: 我是想用switch来写30天或31天、是否为闰年...阿...好麻烦。
: 麻烦各位神人给小弟我给我个方向...
: 或是有更好的方法...@@
: 不然学校根本没人可以问...(大家都是自学,懂皮毛,一般只会自己的程式而已@@)

Links booklink

Contact Us: admin [ a t ] ucptt.com