选择向量中除一个之外的所有元素

Mat*_*teo 15 indexing matlab vector

我的问题与问题非常相似,但我无法确切地知道如何将答案应用于我的问题.

我正在循环一个带变量的向量,k并希望选择整个向量,除了索引处的单个值k.

任何的想法?

for k = 1:length(vector)

   newVector = vector( exluding index k);    <---- what mask should I use? 
   % other operations to do with the newVector

end
Run Code Online (Sandbox Code Playgroud)

小智 27

没有setdiff()的另一种选择是

vector(1:end ~= k)
Run Code Online (Sandbox Code Playgroud)


arn*_*e.b 9

vector([1:k-1 k+1:end])会做.但是,根据其他操作,可能有更好的方法来处理这个问题.

为了完整性,如果要删除一个元素,则不需要去vector = vector([1:k-1 k+1:end])路由,可以使用vector(k)=[];

  • @Matteo是的 (2认同)

cha*_*pjc 7

只是为了好玩,这里有一个有趣的方式setdiff:

vector(setdiff(1:end,k))
Run Code Online (Sandbox Code Playgroud)

有什么有趣的,除了使用之外setdiff,你问?看看的位置end.MATLAB的end关键字转换vector为此上下文中的最后一个索引,即使作为函数调用的参数而不是直接与paren(vector()运算符)一起使用.无需使用numel(vector).换一种方式,

>> vector=1:10;
>> k=6;
>> vector(setdiff(1:end,k))
ans =
     1     2     3     4     5     7     8     9    10
>> setdiff(1:end,k)
Error using setdiff (line 81)
Not enough input arguments.
Run Code Online (Sandbox Code Playgroud)

这并不是完全明显的IMO,但它在许多情况下都会派上用场,所以我想我会指出这一点.