作者JamesChen ( )
看板MATLAB
標題[討論] 簡單的計算 想不到暴力解之外的方法
時間Sat Sep 5 11:20:41 2015
問題很簡單,分兩個部分
一串 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
→ JamesChen: 謝謝大家 09/05 11:20
→ JamesChen: 忘了有第三部分 09/05 11:25
→ JamesChen: 如果一串 1 本身長度低於 100 我也可能希望讓他變為 0 09/05 11:26
→ YoursEver: 下面那篇太複雜了,直接呼叫bwlabel,一行就打完收工. 09/06 00:10
→ YoursEver: 超過100的部分,請利用bwlabel回傳的num解決. 09/06 00:12
推 celestialgod: 又學到一招,感恩 09/06 00:49