Re: [討論] 計算總時間時...資料範圍有重疊怎麼寫?

看板MATLAB作者時間11年前 (2014/05/06 21:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
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天、是否為閏年...阿...好麻煩。 : 麻煩各位神人給小弟我給我個方向... : 或是有更好的方法...@@ : 不然學校根本沒人可以問...(大家都是自學,懂皮毛,一般只會自己的程式而已@@) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.127.81 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1399383693.A.69C.html
文章代碼(AID): #1JQEQDQS (MATLAB)
文章代碼(AID): #1JQEQDQS (MATLAB)