返回除一个矩阵之外的所有列

时间:2014-11-29 12:50:12

标签: matlab matrix

假设我们有这样的矩阵 A

   10 5 8 6 2
A=  9 3 5 4 1
   12 5 7 2 6

如何选择 A 的子集,其中没有第三列(例如)? 像这样:

    10 5 6 2
B =  9 3 4 1
    12 5 2 6

我知道我可以说:

B = A(:,[1 2 4 5]);

但我需要更好的方法

3 个答案:

答案 0 :(得分:6)

您可以使用

B = A(:,1:size(A,2)~=n);

n作为选定列(请参阅@freude的回答)。

他的解决方案在任何情况下都可以正常工作,但是位置索引(如此处)应该比他的方法更快。

答案 1 :(得分:4)

如果我们假设要删除的列是n,则显示为:

B = A(:,[1:n-1 n+1:end]);

答案 2 :(得分:2)

另一种方法是复制,然后通过将其设置为空来删除您不想要的位:

B = A;
B(:,n) = [];

我提到这一点是因为如果您不需要B作为新矩阵但只想从A中取出一列,这是最简单/最容易阅读的方式这样做。