我有一个矩阵x
和一个索引向量p
。现在,我想要选择x
中的所有列,但除p
中的列。
示例:
x = [12,11,33,33;22,44,33,44;33,22,55,32]
p = [2,4]
然后它应该返回
out = [12,33;22,33;33,55]
答案 0 :(得分:3)
一种方式:
out = x;
out(:,p) = []
另一种方式:
out = x(:,setxor(p,1:size(x,2)))
%// ore inspired by Mohsen Nosratinia
out = x(:,setxor(p,1:end))
另一个:
mask(size(x,2)) = 0
mask(p) = 1
out = x(:,~mask)
答案 1 :(得分:3)
使用setdiff
和end
>> x(:,setdiff(1:end,p))
ans =
12 33
22 33
33 55
答案 2 :(得分:-2)
有很多方法可以做到这一点,但一个简单的方法是:
y = x; %// Create copy of x
y(:,p) = [] %// Remove columns p
或者,您可能更喜欢使用sparse
?
x(:,~sparse(p,1,1));
或accumarray
怎么样?
x(:,~accumarray(p.',1))