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 日

1 投票

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 日

1 投票

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 日
you are right I edited the question. thank you
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,[])

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

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by