2014-03-12 45 views
1

我有一個大的數據集,X,由16201 X 49細胞中,第一行包含標籤,例如:由數濾波matlab單元陣列離開虛假錯誤

'Entry1label' 'Entry2label', 'Entry3label', 'Entry4label' 
'stimuli 1' 'stimuli 2' 0.1   10 
'stimuli 1' 'stimuli 3' 0.1   10 
'stimuli 2' 'stimuli 1' 0.1   40 

第4列包括細胞與的值或者10,20,40或60.所有列都有重複的條目(但是列之間的組合不同)。我想過濾單元陣列中的所有條目,例如'Entry4標籤',等於例如10. 我已經試過:

x([x{2:end, 4}] == 10, :) 

這幾乎是工作,但是,大約每二單元有一個與值40的單元中留下!同樣,如果我嘗試了20次,我得到了10次虛假事件。如果我使用40次,我得到20次虛假事件,最後60次我得到一些(但很少),40次。

關於發生了什麼的任何想法?

回答

2

代碼

OUT = X(找到(cell2mat(X(2:端,4))== 10)1,:)

輸出

out = 

    'stimuli 1' 'stimuli 2' [0.1] [10] 
    'stimuli 1' 'stimuli 3' [0.1] [10] 

問題在於第一個元素是第四列的字符串。

2

這裏:x([x{2:end, 4}] == 10, :)

因爲你發現該列的一個子集內的位置,它實際上採取的行通過一個偏移。我猜那個專欄裏的你的價值主要是偶爾有變化的塊,所以它看起來就好像大部分都是匹配的。

你可以把偏移回:

x(find([x{2:end, 4}]==40)+1,:)