logical operation on a column within a matrix
    9 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I have the m-by-n matrix POS
I want to focus on a single column and perform an element-wise logical operation. For instance, turning all zero's to ones:
 POS(POS(:,2)==0)=1;
However, this does nothing. On the other hand, this works on the whole matrix:
 POS(POS==0)=1;
But, obviously, I just want to perform this operation on column 2. What am I missing? I do not want another line of code since speed is very important here.
Even more confusing, the following works on the first column, but not on the second:
 POS(POS(:,1)==1)=2;  % works
 POS(POS(:,2)==1)=2;  % not working
0 commentaires
Réponse acceptée
  lvn
      
 le 28 Fév 2014
        This should work:
 POS(POS(:,2)==0,2)=1;
2 commentaires
  lvn
      
 le 28 Fév 2014
				
      Modifié(e) : lvn
      
 le 28 Fév 2014
  
			filter=(POS(:,2)==0)
gives you a vector (of 0's and 1's).
POS(filter)=1
normally assumes 'filter' to be a matrix. This is why filter=(POS==0) gives you the expected answer. What you want is just to change the second column, hence you only want to target the second column:
POS(filter,2)=0
This tells matlab to change only the second column, using the filter as argument. Note sure this is very clearly explained, but read more here http://www.mathworks.com/help/matlab/math/matrix-indexing.html
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Multicore Processor Targets dans Help Center et File Exchange
			
	Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

