0
這是一個非常具體的問題。我有一個M * 3矩陣。第一列包含M組元素。它可能會遵循這一點。特定列[刪除元素直到上一個零元素,然後從第一個零元素刪除元素到結束]
0
0
0
0
1
1
1
1
1
1
1
1
1
0
0
0
0
0
我的興趣只有1s和相應的其他列值。我可以刪除零買一套新只用1秒矩陣的,但有時也可能遵循此:
1
1
1
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
時的情況類似上面我想不顧1S在一開始並刪除M中的所有元素* 3矩陣到第一個1,然後當它到達列的第二個零開始時,它可以將所有的值移到列的末尾。 (所以它將是13 * 3矩陣)。
我正在做這個matlab。 謝謝:)
它的工作,但你能解釋我是如何工作的?謝謝:) – user2661372
第一行提取第一列。第二行獲得一個數組,其中包含第一列中每個條目的索引,第一行是第一行。第三行獲取索引中連續值之間的差異,並查找所有不相差1的索引(換句話說,以零分隔的1的索引)。如果檢查是空的,這意味着我們有您列出的第一個案例,我們只是提取我們想要的行。否則,檢查中的第一個和第二個值將指示圍繞1的中間運行的索引。這適用於您列出的案例。 – MattG
在某些情況下,我收到此錯誤:嘗試訪問檢查(2);索引越界 ,因爲numel(check)= 1。 abc2錯誤(第162行) indices2 =索引(check(1)+1:1:check(2)); – user2661372