How do I find similar columns in a matrix?
    2 views (last 30 days)
  
       Show older comments
    
    Raúl Alonso Merino
 on 1 Feb 2019
  
    
    
    
    
    Commented: Star Strider
      
      
 on 6 Feb 2019
            Hello! So i have a matrix of 32x129600, I mean, there are 129600 columns of 32 elements each. What I want is to find the columns that are similar, let's say the difference between their elements is less than 0.001, how can I do this?
Thank you so much for your answers.
2 Comments
Accepted Answer
  Star Strider
      
      
 on 1 Feb 2019
        
      Edited: Star Strider
      
      
 on 4 Feb 2019
  
      I would use the pdist (link) function.  It will compare the columns of your data using one of the built-in distance metrics, or one you can define.  
EDIT —      (4 Feb 2019 at 21:50)
Using the matrix you posted (That I will call ‘M’), the pdist call would be: 
dr = pdist(M','cityblock');                                 % Transpose ‘M’ To Compare Columns
Result = squareform(dr)
and the results for this matrix are then: 
Result =
         0    0.3065    0.8071    1.4538
    0.3065         0    0.5030    1.1494
    0.8071    0.5030         0    0.6467
    1.4538    1.1494    0.6467         0
To find the rows and columns of those values that meet your criterion: 
    [Row,Col] = find(Result <= 0.001 & Result > 0);
that here returns an empty matrix.  
11 Comments
More Answers (1)
  KSSV
      
      
 on 1 Feb 2019
        You can have a llok on ismember, ismemebrtol. Also you can use isequal for logical check whether the lements matching exactly. You may also plot a histogram and see. You can run a loop, get the difference and check. There are multiple methods to achieve what you want. 
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!