How to find unique pages in a 3d matrix?

12 ビュー (過去 30 日間)
may
may 2013 年 2 月 12 日
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])

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 2 月 12 日
編集済み: Azzi Abdelmalek 2013 年 2 月 12 日
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,[])

その他の回答 (1 件)

Honglei Chen
Honglei Chen 2013 年 2 月 12 日
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 件のコメント
may
may 2013 年 2 月 12 日
when I use unique(Ar,'rows','stable')
I get this error! ??? Error using ==> unique at 34 Unrecognized option.
Honglei Chen
Honglei Chen 2013 年 2 月 12 日
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,[])

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by