如下圖
紫色是一個二元陣列(ex: 0,0,0,1,1,0,1,0,1,1,1,0)
我希望可以抓到紫色陣列的密集處
也就是0,1,0,1交替頻繁的部分
輸出也是二元陣列 1代表交替密集 0代表平穩
如紅色圖的樣子
請問有什麼好方法嗎?
我用matlab寫的
我的想法是把陣列以3個為1單位
密集 if a[0] * (a[1] - a[2]) else 反之
如果用二進制處理,我想到的是邏輯互斥或:
a[0] ^ a[1], a[1] ^ a[2]...
丟進去:0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0
會變成 : 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1
接著取1的部分:index分別是3, 5, 6, 7, 8, 11
對應到的原始陣列為index和index+1相反
所以ex的紫色部分為[3,4],[5,6],[6,7],[7,8],[8.9],[11,12]之間的線
互斥完:[0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1]
做加法:[0, 0, 1],[0, 1, 1],[1, 1, 0],[0, 1, 0(缺位補零)]
得密度:[1],[2],[2],[1]