[討論] 簡單的計算 想不到暴力解之外的方法

看板MATLAB作者 ( )時間8年前 (2015/09/05 11:20), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/3 (看更多)
問題很簡單,分兩個部分 一串 0 1 數列 大致長得像是 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 簡單來說 1 代表 A 事件發生 0 代表沒有 然後這是每個時間點的紀錄 所以 A 一旦發生不會只發生 1 個點就結束 一定是一串 我想要做的是創一個新的數列 第 N 次 一串 1 變成一串 N 以上面的例子來說就是後面 4 個 1 都變成 2 我只想到 for loop + if 硬幹的方法 但實際資料很長 又有好多受試者 感覺很耗時間 第二個部份是 如果兩串 1 之前的 0 少於 200 個 需要把這兩串 1 合併 (中間的 0 都當作 1) 我一樣只想到硬解 我猜是小弟我不夠熟 Matlab 平常都在用一些自己習慣的 function 沒有做過類似的事情 但應該都有速解 希望高手可以幫個忙 甚至提點一下就好 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.208.230.65 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1441423246.A.93D.html

09/05 11:20, , 1F
謝謝大家
09/05 11:20, 1F

09/05 11:25, , 2F
忘了有第三部分
09/05 11:25, 2F

09/05 11:26, , 3F
如果一串 1 本身長度低於 100 我也可能希望讓他變為 0
09/05 11:26, 3F

09/06 00:10, , 4F
下面那篇太複雜了,直接呼叫bwlabel,一行就打完收工.
09/06 00:10, 4F

09/06 00:12, , 5F
超過100的部分,請利用bwlabel回傳的num解決.
09/06 00:12, 5F

09/06 00:49, , 6F
又學到一招,感恩
09/06 00:49, 6F
文章代碼(AID): #1Lwb-Eaz (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Lwb-Eaz (MATLAB)