作者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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1441423246.A.93D.html
1F:→ JamesChen: 谢谢大家 09/05 11:20
2F:→ JamesChen: 忘了有第三部分 09/05 11:25
3F:→ JamesChen: 如果一串 1 本身长度低於 100 我也可能希望让他变为 0 09/05 11:26
4F:→ YoursEver: 下面那篇太复杂了,直接呼叫bwlabel,一行就打完收工. 09/06 00:10
5F:→ YoursEver: 超过100的部分,请利用bwlabel回传的num解决. 09/06 00:12
6F:推 celestialgod: 又学到一招,感恩 09/06 00:49