Select all elements except one in a vector

后端 未结 6 803
旧巷少年郎
旧巷少年郎 2021-01-04 02:47

My question is very similar to this one but I can\'t manage exactly how to apply that answer to my problem.

I am looping through a vector with a variable k

6条回答
  •  执笔经年
    2021-01-04 03:22

    Just for fun, here's an interesting way with setdiff:

    vector(setdiff(1:end,k))
    

    What's interesting about this, besides the use of setdiff, you ask? Look at the placement of end. MATLAB's end keyword translates to the last index of vector in this context, even as an argument to a function call rather than directly used with paren (vector's () operator). No need to use numel(vector). Put another way,

    >> 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.
    

    That is not completely obvious IMO, but it can come in handy in many situations, so I thought I would point this out.

提交回复
热议问题