2017-10-04 127 views
0

的一部分這是我的樣本數據(單元陣列)刪除字符串單元陣列

>A_ 

'CUST_1627_PI425479659' 'Pri-miR-100u2'   'u2' 
'CUST_2430_PI425479649' 'Pri-miR-L7a-3d'  'd' 
'CUST_226_PI425479649' 'Pri-miR-3130-4u1'  'u1' 
'CUST_1618_PI425479649' 'Pri-miR-147bu'   'u' 
'CUST_1449_PI425479659' 'Pri-miR-107u'   'u' 
'CUST_1546_PI425479659' 'Pri-miR-4299d1'  'd1' 

最後一個字符或在第二列中的最後兩個字符被寫入到第三列中。我想從第二列的字符串中刪除它們。

在結果就應該是這樣的

>A_ 

'CUST_1627_PI425479659' 'Pri-miR-100'  'u2' 
'CUST_2430_PI425479649' 'Pri-miR-L7a-3'  'd' 
'CUST_226_PI425479649' 'Pri-miR-3130-4' 'u2' 
'CUST_1618_PI425479649' 'Pri-miR-147b'  'u' 
'CUST_1449_PI425479659' 'Pri-miR-107'  'u' 
'CUST_1546_PI425479659' 'Pri-miR-4299'  'd1' 

我這樣試過,但它不工作。

s= {'u','u1','u2','d','d1'}; 

for i=1:length(A_(:,2)) 
    A_(i,2)= erase(A_(i,2),s) 
end 

回答

1

使用regexprep''替換在所述第二列中的第三列的發生。

A_(:,2) = regexprep(A_(:,2), A_(:,3), ''); 

或修復您的代碼使用erase(在R2016b介紹):

for k=1:length(A_(:,2)) 
    A_(k,2) = erase(A_(k,2), A_(k,3)); %You need A_(k,3) here 
end 

但...因爲erase是直接適用於電池陣列,所以你並不需要一個循環這裏即

A_(:,2) = erase(A_(:,2), A_(:,3)); 
+0

謝謝:)它完美的作品 –