我在MATLAB中有2个矩阵。我想删除第一个矩阵的列,其中至少有一个大于5或小于零的元素。然后我想从第二个矩阵中删除该列。如果可能的话?
答案 0 :(得分:1)
假设我们有2个矩阵A
和B
,我们希望删除包含至少一个符合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”查找位置,然后使用该数组。