How to find unique pages in a 3d matrix?
    10 views (last 30 days)
  
       Show older comments
    
If I have 3d matrix like
    A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2],[1 2; 3 4])
I want to find unique pages in this matrix so the result should be
   result = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2])
0 Comments
Accepted Answer
  Azzi Abdelmalek
      
      
 on 12 Feb 2013
        
      Edited: Azzi Abdelmalek
      
      
 on 12 Feb 2013
  
      A = cat(3, [1 2; 3 4;0 0], [5 6; 3 4; 0 0], [5 6; 1 2;0 0],[1 2; 3 4;0 0])
[n,m,p]=size(A)
a=reshape(A,n,[],1)
b=reshape(a(:),n*m,[])'
c=unique(b,'rows','stable')'
reshape(c,n,m,[])
0 Comments
More Answers (1)
  Honglei Chen
    
      
 on 12 Feb 2013
        You can try to reshape it to 2D first, then remove duplicates. For example
A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2],[1 2; 3 4])
Ar = reshape(A,[4 4])
Ar = unique(Ar.','rows','stable').'
reshape(Ar,2,2,[])
I don't quite understand your second question. I think MATLAB automatically removes empty pages. What do you mean by "empty pages"?
3 Comments
  Honglei Chen
    
      
 on 12 Feb 2013
				Your version does not support 'stable' option, try the following
A = cat(3, [1 2; 3 4], [5 6; 3 4], [5 6; 1 2],[1 2; 3 4])
Ar = reshape(A,[4 4])
[dummy,idx] = unique(Ar.','rows')
reshape(Ar(:,sort(idx)),2,2,[])
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

