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