在Matlab中通过非给定索引获取向量元素

时间:2014-07-26 17:57:26

标签: matlab vector indexing

我有以下内容:

a = [1:10 1:10];
idx = [3 5 7];

b = a(idx);
b = [3 5 7];

c = a(~idx); %this syntax is not correct!
c = [1 2 4 6 8 9 10 1 2 3 4 5 6 7 8 9 10];

是否有直接的方式来获得c这样的?换句话说,我有一个向量,我想要排除给定索引处的元素,我该怎么做?

1 个答案:

答案 0 :(得分:2)

  1. 显式方式:生成否定的逻辑索引:

    logical_idx = true(1,numel(a));
    logical_idx(idx) = false;
    c = a(logical_idx);
    
  2. 使用setdiffismember的更紧凑的代码:

    c = a(setdiff(1:numel(a), idx));
    

    c = a(~ismember(1:numel(a), idx));
    
  3. 直接删除由idx索引的元素:

    c = a;
    c(idx) = [];