2016-03-21 60 views
0

我需要将矩阵列中的重复元素替换为0,并删除全部为0的行。如果我的矩阵是这样的意思。 输入=如何将matlab中列矩阵中的重复元素替换为0

1  0  0  1  
0  1  0  1  
0  0  1  1  
1  1  1  1  

我的预期输出应该是这样的

输出=

1  0  0  1  
0  1  0  0  
0  0  1  0  
0  0  0  0 ---> this row should be get deleted in this case 

这并不是我的问题的工作

c = [ 1 1 0 1 0 1 1 1 0 1 1 0];  
[c, ic] = unique(a, 'first'); 
c(~ismember(1:length(a),ic)) = 0; 

回答

2

您可以使用逻辑索引和cumsum:

A = [1  0  0  1;  
     0  1  0  1;  
     0  0  1  1;  
     1  1  1  1]; 


ind   = cumsum(A); %cumulative sum (by column) 
A(ind>1)  = 0;   
A(sum(A')==0,:)=[]   
相关问题