在matlab中删除一列matrice

时间:2016-04-25 10:52:11

标签: matlab

我在MATLAB中有2个矩阵。我想删除第一个矩阵的列,其中至少有一个大于5或小于零的元素。然后我想从第二个矩阵中删除该列。如果可能的话?

2 个答案:

答案 0 :(得分:1)

假设我们有2个矩阵AB,我们希望删除包含至少一个符合a<=0 #or# a>=5的元素的列。换句话说,我们希望保留所有商品满足a>0 #and# a<5的列。

Cols=find(min(A) > 0 & max(A) < 5)    % find columns
newA=A(:,Cols);                       % pick columns of A
newB=B(:,Cols);                       % pick columns of B

修改

根据Dan的评论:上面的代码较慢但更容易编辑。

您也可以使用

newA=A(:,min(A)>0 & max(A)<5);
newB=A(:,min(A)>0 & max(A)<5);

更快但更难编辑。

Cols=min(A)>0 & max(A)<5;
NewA=A(:,Cols);
NewB=B(:,Cols);

最后一部分也有效。

答案 1 :(得分:0)

首先制作一个大于5的元素的掩码。轻松调用矩阵A和B.

maskA = A>5;

然后说你只对列

感兴趣
maskAcolumn = any(maskA,1);

因此,如果列的值大于5,则maskAcolumn为1,否则为0。现在删除列

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

如果B大于A,使用“find”查找位置,然后使用该数组。