iT邦幫忙

0

如何抓到二元陣列密集處

如下圖
紫色是一個二元陣列(ex: 0,0,0,1,1,0,1,0,1,1,1,0)
我希望可以抓到紫色陣列的密集處
也就是0,1,0,1交替頻繁的部分
輸出也是二元陣列 1代表交替密集 0代表平穩
如紅色圖的樣子
請問有什麼好方法嗎?
我用matlab寫的

1 個回答

0
微甜的酸
iT邦新手 4 級 ‧ 2020-10-03 04:56:45

(法一)

我的想法是把陣列以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]

我要發表回答

立即登入回答