2011-09-27 161 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