## How to find unique pages in a 3d matrix?

on 12 Feb 2013

### Azzi Abdelmalek (view profile)

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])`

## Products

### Azzi Abdelmalek (view profile)

on 12 Feb 2013
Edited by Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

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,[])
```

### Honglei Chen (view profile)

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"?

may

### may (view profile)

on 12 Feb 2013

you are right I edited the question. thank you

may

### may (view profile)

on 12 Feb 2013

when I use unique(Ar,'rows','stable')

I get this error! ??? Error using ==> unique at 34 Unrecognized option.

Honglei Chen

### Honglei Chen (view profile)

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,[])
```

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi