2011-09-27 213 views
2

我很難找到一個matlab函數來將一個元素從一個數組中切片出來。切片陣列

例如:

A = [1, 2, 3, 4] 

我要拿出這個數組的元素,比如元素3:

B = [1, 2, 4] 

是否有這樣的MATLAB函數或我將不得不代碼該算法構造一個新的數組除了3的所有元素?

回答

6

做到這一點:

index_of_element_to_remove = 3; 
A(index_of_element_to_remove) = []; 

現在A將[1 2 4]

如果你想在同一時間刪除更多的元件可以這樣做:

index_of_element_to_remove = [1 3]; 
A(index_of_element_to_remove) = []; 

現在A將[2 4]

4

按價值計算,這將刪除等於所有元素3

A(find(A==3)) = [] 

或者通過索引

A(3) = [] 
+3

第一種情況是爲'A(A == 3)= []'更好。請參閱「邏輯索引」。 – Nzbuu

+0

@Nzbuu,完全同意我的答案也應該包括邏輯索引,但什麼構成更好的是[討論](http://stackoverflow.com/questions/3133712/logical-vs-numerical-array-in-matlab )。 – Maurits

+1

在這種情況下不應該討論。如果你正在做這種索引,那麼給'find'增加一個額外的調用總是多餘的,會降低性能。這兩個版本都讀作「從A中刪除等於3的元素」。 – Nzbuu