在matlab中删除一些数字后对数字重新排序

时间:2013-06-04 02:37:19

标签: matlab

我有一个向量[1 2 3 4 ... 100]和另一个向量存储我要删除的数字,如[2 3 4]。删除后,原始矢量中的数字应映射到另一个顺序,例如,1-> 1,5-> 2,6-> 3等。有没有有效的方法来做到这一点?非常感谢!

2 个答案:

答案 0 :(得分:1)

我会使用setdiff

% original vector
A = 1:100;

% elements to be removed
B = [2 3 4 18 21];

% new order (indices)
C = randperm(numel(A)-numel(B));

% Step 1) remove the elements
[D,I] = setdiff(A,B); % ordered
D = A(I);             % restore original order

% Step 2) re-order the elements
D = D(C)

答案 1 :(得分:0)

你可以这样做:

  original_vector = 1:100;

  delete_vector = [2 3 4];

  for ii = 1:length(delete_vector)
        original_vector(original_vector==delete_vector(ii)) = [];
  end