2011-03-28 36 views
3

大家好 我有,有時看起來像這樣的數據:
時間......開/關...價值
50 ...... 1 .. ....... 70
50 ...... 0 ......... 70
50 ...... 1 ......... 70在Matlab使用「獨一無二」,保留第一次出現

我想刪除重複的'on'行,但也是'off'行,因爲它是多餘的,並且以'off'開頭對我的腳本不利。

似乎與獨特的'第一'論點應該有所幫助,但我沒有喜悅。

有什麼建議嗎?

回答

2

對'rows'參數使用唯一而不是'first'來刪除重複的'on'。要取消「關閉」,一個簡單的解決方案是首先將所有設置爲「打開」,然後使用唯一的。

A = [50 1 70; 50 0 70; 50 1 70] 
A = 

    50  1 70 
    50  0 70 
    50  1 70 

A(:,2) = 1 %Set all on/off values to 'on' 

A = 

    50  1 70 
    50  1 70 
    50  1 70 

R = unique(A,'rows') 

R = 

    50  1 70 

編輯:只有當兩個鄰居行相等時,才能刪除'off'行,您需要比較鄰居行。有很多方法可以做到這一點,但這裏有一個用於一般NX3矩陣我做了快

rows = 2:length(A)-1; 
p=find(all(A(rows+1,:)==A(rows-1,:),2)); %Get index of where rows are equal 
A(rows(p),2) = 1; Set those rows to be 'on', so they can be removed by unique 
+0

@ Ghaul.Thanks但大多數以0其他數據需要保持的是 - 所以我不會想要將他們全部改爲'開'。有沒有辦法改變兩個相同行之間的0? – Tom 2011-03-28 11:04:05

+0

是的,那可行!謝謝。 – Tom 2011-03-28 12:45:11

+0

@Tom:沒問題=) – Ghaul 2011-03-28 12:50:28

相關問題