获取除某些索引之外的所有矩阵列

时间:2015-05-06 13:27:46

标签: matlab

我有一个矩阵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] 

3 个答案:

答案 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)

使用setdiffend

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